繁体   English   中英

鲁恩算法问题

[英]Luhn algorithm issues

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

这两个示例很容易避免,但随后让我想知道其余组合是假的,但仍使用该算法验证为正确。

是我,以及我看过的那些示例,这些代码做错了什么,还是算法的已知错误? 如果是这样,我该如何解决?还是有其他更合适的方法?

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

该算法还用于美国的信用卡号。 但是测试卡号(例如4111111111111111)可以通过。 这对于在您尝试付款之前捕获差额数字非常有帮助,即使每次付款失败,每次付款都会产生费用。 但是要最终知道信用卡号是否正确,您需要实际对其进行收费。

从理论上讲,这些有效的数字-Luhn算法是一种用于输入错误数字的人的校验和,而不是用于告诉他们是否已编入数字。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM