首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Luhn算法问题

Luhn算法问题
EN

Stack Overflow用户
提问于 2013-03-22 02:30:36
回答 2查看 728关注 0票数 0

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

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

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-22 02:36:01

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

在美国,这种算法也被用于信用卡号码。但是,像4111111111111111这样的测试卡号码将会通过测试。在你尝试付款之前捕捉坏数字是非常有帮助的,因为每次付款都会产生成本,即使它不成功。但是为了最终知道一个信用卡号码是否好,你需要对它进行收费。

票数 3
EN

Stack Overflow用户

发布于 2013-03-22 02:38:01

从理论上讲,这些是有效的数字- Luhn算法是人们输入错误数字的校验和,而不是用来判断他们是否是虚构的。

例如,在支付网关中使用的标准测试信用卡之一(在英国)是4444333322221111,这恰好是一个有效的Visa卡号。因为卡没有分配给任何人,所以尝试用它来支付将会失败,但这与校验数字无关,而是与数字背后的含义有关。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15555367

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档