用模10算法校验Code25

2019-04-13 12:19发布

Luhn算法(Luhn algorithm),也称为“模10”(Mod 10)算法

modulus 10 算法会通过校验码对一串数字进行验证,校验码通常会被加到这串数字的末尾处,从而得到一个完整的身份识别码。

我们以数字“2445839”为例,计算其校验位:

[list]
[1]从校验位开始,从右往左,偶数位乘3(例如,9*3=27)
[2]把得到的数字加在一起(本例中得到81);
[3]将数字的和取模10(本例中得到1),再用10去减(本例中得到9),得到校验位。
[4]由于Code25必需是偶数位,如果是基数位,那么要在在前面加'0'。因为0乘以任何数都是0,所以不会影响校验码的生成
[/list]

例子:
[table]
|位子|8|7|6|5|4|3|2|1
|Code25码|2|4|4|5|8|3|9|x
|偶数位乘3|3|1|3|1|3|1|3|x
|将数字相加|6+|4+|12+|5+|24+|3+|27+|=81
[/table]
将数字的和取模10(本例中得到1),再用10去减(本例中得到9),得到校验位。

最后得到Code25: 24458399

如果是基数位,例如244589,那么就要在数字前面加'0',得到0244589