`
kanwoerzi
  • 浏览: 1647831 次
文章分类
社区版块
存档分类
最新评论

luhn校验算法(Java实现)

 
阅读更多

TheLuhn algorithmorLuhn formula, also known as the "modulus10" or "mod 10"algorithm, is a simplechecksumformula used to validate a variety of identification numbers, such ascredit card numbers,IMEI numbers,National Provider Identifier numbersin US andCanadianSocial Insurance Numbers. It was created byIBMscientistHans Peter Luhnand described inU.S. Patent No. 2,950,048, filed on January 6, 1954, and granted on August 23, 1960.——来自维基百科(http://en.wikipedia.org/wiki/Luhn_algorithm)。

案例

当你输入信用卡号码的时候,有没有担心输错了而造成损失呢?其实可以不必这么担心,因为并不是一个随便的信用卡号码都是合法的,它必须通过Luhn算法来验证通过。

该校验的过程:

1、从卡号最后一位数字开始,逆向将奇数位(135等等)相加。

2、从卡号最后一位数字开始,逆向将偶数位数字,先乘以2(如果乘积为两位数,则将其减去9),再求和。

3、将奇数位总和加上偶数位总和,结果应该可以被10整除。

例如,卡号是:5432123456788881

则奇数、偶数位(用红色标出)分布:5432123456788881

奇数位和=35

偶数位乘以2(有些要减去9)的结果:16 2 6 1 5 7 7,求和=35

最后35+35=70可以被10整除,认定校验通过。


运行结果:

Please input your credit card number:
5432123456788881
第0位数字是:1
第1位数字是:8
第2位数字是:8
第3位数字是:8
第4位数字是:8
第5位数字是:7
第6位数字是:6
第7位数字是:5
第8位数字是:4
第9位数字是:3
第10位数字是:2
第11位数字是:1
第12位数字是:2
第13位数字是:3
第14位数字是:4
第15位数字是:5
奇数位的和是:35
偶数位的和是:35
Recept.


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics