Luhn是著名的校验和算法也叫模10算法,主要应用于解决银行卡号,社保号等重要信息传输出错问题。
先来解释下算法原理,校验和类型的算法,一般是ID+校验号,校验号和ID号的每位相关,如果出错,通过某种运算能检测出这种改动。借用维基百科的例子我来解释下。
我们以数字“7992739871”为例,计算其校验位:
从校验位开始,从右往左,偶数位乘2(例如,7*2=14),然后将两位数字的个位与十位相加(例如,10:1+0=1,14:1+4=5);
把得到的数字加在一起(本例中得到67);
将数字的和取模10(本例中得到7),再用10去减(本例中得到3),得到校验位。
原始数字 偶数位乘2 将数字相加
7
9
9
2
7
3
9
8
7
1
x
7
18
9
4
7
6
9
16
7
2
x
7
9
9
4
7
6
9
7
7
2
=6 7
OK,解释到这里,那么跟我们有什么相关呢,最常见的例子就是银行卡号&