【问题标题】:Does the Luhn algorithm work for all mainstream credit cards? (Discover, Visa, Mastercard, Amex)Luhn 算法是否适用于所有主流信用卡? (发现、维萨卡、万事达卡、美国运通卡)
【发布时间】:2011-10-22 21:11:30
【问题描述】:

参考:Luhn Algorithm

Luhn 算法是一种快速验证用户是否正确键入其 CC # 的好方法。

但是,我担心可能有一部分主流信用卡不使用 Luhn 算法友好的数字。

我确实在我们的应用程序中进行了登录,以检测所有 Luhn-Algorithm-rejections 中的模式,但我宁愿确切地知道。

【问题讨论】:

    标签: e-commerce


    【解决方案1】:

    差不多了。

    中国银联和一种大来卡 (enRoute) 不使用 Luhn 验证。 (LazyOne’s answer 关于 Diners Club 的说法有误。)

    几乎所有其他人都这样做。

    引用Wikipedia's 'Bank card' page

    根本不验证:

    • Diners Club 途中
    • 中国银联

    使用 Luhn 2 验证:

    • 美国运通
    • 银行卡
    • Diners Club Carte Blanche
    • 大来国际俱乐部
    • Diners Club 美国和加拿大
    • 发现卡
    • InstaPayment
    • JCB
    • 激光
    • 大师
    • 丹科尔特
    • 万事达卡
    • 独奏
    • 开关
    • 签证
    • 签证电子

    【讨论】:

    • 第一个问题的关键词是“主流卡”....中国银联和大来卡的奇数子集似乎在“主流”之外,因此,LUHN 将验证“主流”卡片”/
    • 是的,那是两张非常常见的信用卡,诚然不在美国。感谢您的贡献;请有美好的一天。
    • 自您的回答以来,Wiki 页面发生了变化。银联现在似乎也使用 Luhn 算法来验证卡号。除了 2015 年 3 月更改的 Wikipedia 文章,我没有其他来源。
    • 有一部分中国银联卡上带有Discover标志,并通过了Luhn验证。我可以从生产经验中确认这一点。
    • @JohnHaugeland:什么是“Luhn 2”?我似乎在网上找不到任何关于它的信息。
    【解决方案2】:

    是的 -- 它适用于所有主流卡类型。

    我有一个自定义 PHP 类来处理从各种“验证卡号”编译的卡数据以及来自少数编程语言的类似函数 + 来自维基百科和一些支付处理系统的信息。它成功验证了这些卡类型的测试卡号(每个支付系统都很少有这样的卡号):

    • VISA 借记/贷记
    • 维萨电子
    • 签证三角洲
    • 万事达卡
    • 美国运通
    • 大师
    • 开关
    • 独奏
    • 大来俱乐部
    • 发现
    • JCB

    【讨论】:

    • 这是不正确的。 Diners Club enRoute 不使用 Luhn。
    【解决方案3】:

    LUN 检查适用于大多数信用卡。它是一个模数 10 校验位系统,以保证卡号已被准确读取/记录(磁条、虚拟终端或手动卡打印机旧时代的手动输入)。

    在手动数据输入的时代,这些检查系统用于确保正确输入 UPS 的取件簿编号系统等密钥(模数 7 校验位)。

    它甚至用于条码系统,如代码 128,需要在编码数据字符串中添加一个模数 103 数字来验证代码是否被正确读取。

    【讨论】:

    • 如果其他两个答案都同意它不适用于所有卡,您可能需要更改第一句话。
    猜你喜欢
    • 2016-10-17
    • 2019-10-06
    • 2012-09-30
    • 2021-09-01
    • 1970-01-01
    • 2016-12-01
    • 2012-06-08
    • 2021-07-21
    • 1970-01-01
    相关资源
    最近更新 更多