我对Luhn算法有疑问用于错误检测和校验和数字的luhn算法(mod 10)。例如签证、信用卡等数字。
例如,我们有数字:
数字1 2 3 4 5 6 7 8 9 3
步骤1:将交替数字的值乘以2,开始
从第二个最右边的数字开始。
例子:
数字1 2 3 4 5 6 7 8 9 3
乘法器X2 X2 X2 X2
第二步:将上述产品的所有个别数字相加
加上原来的两位数如果超过10,则用9加减。
号码。
例子:
Digit 1 2 3 4 5 6 7 8 9 3
Multiplier X2 X2 X2 X2 X2
Result 2 2 6 4 10 6 14 8 18 3
1+0 1+4 1+8
Sum 2+ 2+ 6+ 4+ 1+ 6+ 5+ 8+ 9+ 3 = 40
第三步:如果10的总模等于0,那么这个数就是
根据LUHN公式有效;否则
无效。
例子。
40 mod 10=0有效,如果不是0无效。
问题是,为什么在第2步中使用乘2什么原因(请与链接参考或论文)。
谢谢
最佳答案
尽管在Wikipedia article中没有给出这个细节的明确理由,但是每秒钟的乘法很可能实现对相邻位置交换的打字错误的检测更确切地说,有人提到
luhn算法将检测几乎所有相邻数字的转置。但是,它不会检测到两位序列09到90的换位(或反之亦然)。
如果相邻的位置被置换,校验和可能会改变如果没有不同的因素(2代表右边的偶数位置,1代表奇数位置),情况就不会是这样了。
关于algorithm - 为什么Luhn算法乘以2?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42083781/