当我们使用 Luhn 算法验证信用卡时,为啥要反转数字?

Posted

技术标签:

【中文标题】当我们使用 Luhn 算法验证信用卡时,为啥要反转数字?【英文标题】:Why shall we reverse the digits when we use Luhn's Algorithm for validating a credit card?当我们使用 Luhn 算法验证信用卡时,为什么要反转数字? 【发布时间】:2017-09-11 17:30:23 【问题描述】:

我正在尝试实现验证信用卡的Luhn算法,有一个步骤是我们反转卡号,为什么需要反转号码?

【问题讨论】:

Luhn algorithm中没有这个步骤。 @AlexP 一些网站正在写这一步。我会按照***的说法。 混淆的部分原因可能是您应该从最右边的数字开始,然后向左移动。这当然与反转数字,然后向右移动相同。 【参考方案1】:

Luhn 算法涉及将数字中的每隔一个数字加倍,这样最右边的数字(校验位)就不会加倍。这意味着最左边的数字可能会或可能不会加倍,具体取决于该数字是奇数位还是偶数位。处理这种变化的一种方法是颠倒数字,并且总是以非双倍数字开头——但这对我来说似乎有点过头了;有多种解决方案(例如以相反的顺序索引数字)比反转数字的工作量少。

【讨论】:

以上是关于当我们使用 Luhn 算法验证信用卡时,为啥要反转数字?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Luhn 算法创建信用卡验证器?

LUHN 信用卡验证在有效卡号上失败

C:信用卡号码检查器/ Luhn 算法

JavaScript 卡 PAN 校验位 Luhn 验证

iPhone Sdk 中的信用卡验证算法

信用卡号码的 Luhn 或 Verhoeff 算法