项目需要找了比较多银行卡的校验方法,发现很多博客的校验方法写的不清不楚乱七八糟,有的连算法的名字都写错了(写成Luhm算法的都有ヽ(#`Д´)ノ),不知道是不是从其他网站直接复制过去的,在这里把自己已经验证成功的方法写下来,避免大家再次踩坑。
Luhn算法定义(来自维基百科):
Luhn算法(Luhn algorithm),也称为“模10”(Mod 10)算法,是一种简单的校验和算法,一般用于验证身份识别码,例如发卡行识别码、国际移动设备辨识码(IMEI),美国国家提供商标识号码,或是加拿大社会保险号码。该算法由IBM科学家Hans Peter Luhn创造,专利于1954年1月6日申请,1960年8月23日颁证,美国专利号2950048。
该算法现已属于公有领域并得到了广泛的应用,例如ISO/IEC 7812-1。它不是一种安全的加密哈希函数,设计它的目的只是防止意外出错而不是恶意攻击。
Luhn算法释义(来自维基百科):
Luhn算法会通过校验码对一串数字进行验证,校验码通常会被加到这串数字的末尾处,从而得到一个完整的身份识别码。
我们以数字“7992739871”为例,计算其校验位:
从校验位开始,从右往左,偶数位乘2(例如,7*2=14),然后将两位数字的个位与十位相加(例如,10:1+0=1,14:1+4=5);
把得到的数字加在一起(本例中得到67);
将数字的和取模10(本例中得到7),再用10去减(本例中得到3),得到校验位。
| 原始数字 | 7 | 9 | 9 | 2 | 7 |
|---|

本文详细介绍了如何使用QT C++实现Luhn算法,该算法用于验证银行卡号的合法性。通过解释算法原理,举例说明计算过程,并提供代码实现,帮助读者理解和应用Luhn算法。

1439

被折叠的 条评论
为什么被折叠?



