【问题标题】:Luhn algorithm issuesLuhn算法问题
【发布时间】:2023-04-05 08:30:01
【问题描述】:

我决定使用 Luhn 算法来验证一些瑞典的社会安全号码。通过自己编写函数,我得到了按计划工作,尽管存在一些问题。使用我的代码和我尝试过的其他代码,我发现它仍然可以验证简单的组合,例如 2222222222 和 4444444444 是有效的。

这两个例子很容易避免,但它让我想知道其余的组合是假的,但仍然通过使用算法验证为真。

是我,以及我看过的那些例子,是代码出了问题,还是算法的已知错误?如果是这样,我该如何解决,或者是否有其他更合适的方法?

【问题讨论】:

    标签: php mysql algorithm luhn


    【解决方案1】:

    Luhn 算法并非用于验证 SSN 号码是否有效。只是它的格式有效。它有助于捕获错误输入的数字,并使黑客/垃圾邮件发送者试图破坏您的系统变得更加困难。这并不是为了阻止输入错误的数字。

    该算法也用于美国的信用卡号码。但是像 4111111111111111 这样的测试卡号就可以通过了。在您尝试付款之前捕获错误数字非常有帮助,即使付款不成功,每次付款都会产生费用。但要最终知道信用卡号是否正确,您需要实际收取费用。

    【讨论】:

    • 啊哈,我明白了。然后这是我的一个误解。至少它使事情变得更安全,然后根本没有检查。感谢您的详尽回答。
    【解决方案2】:

    理论上,这些有效数字 - Luhn 算法是对输入错误数字的人的校验和,而不是用于判断他们是否编造了数字。

    例如,支付网关(在英国)使用的标准测试信用卡之一是 4444333322221111,它恰好是有效的 Visa 卡号。由于该卡未分配给任何人,因此尝试使用它实际付款会失败,但这与校验位无关,而与数字背后的含义有关。

    【讨论】:

      猜你喜欢
      • 2011-12-03
      • 2021-05-16
      • 1970-01-01
      • 2013-08-10
      • 2015-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-04
      • 1970-01-01
      相关资源
      最近更新 更多