一个信用卡号必须是13到16位的整数
1954年,IBM的Hans Luhn提出一种算法,用于验证信用卡号的有效性。
这个算法在确定输入的卡号是否正确,或者这张信用卡是否被扫描仪正确扫描方面是非常有用的。
- 4,指Visa信用卡
- 5,指Master万事达卡
- 37,指American Express 国际信用卡
- 6,指Discover 信用卡
遵循这个合法性检测可以生成所有的信用卡号,通常称之为Luhn检测或者Mod 10检测,可以如下描述(为了方便解释,假设卡号4388576018402626:
1.从右到左对偶数位数字翻倍。如果对某个数字翻倍之后的结果是一个两位数,那么就将这两位加在一起得到一位数。
2.现在将第一步得到的所有一位数相加。
3.将卡号里从右到左奇数位上的所有数字相加。
4.将第二步和第三步得到的结果相加。
5.如果第四步得到的结果能被10整除,那么卡号是合法的;否则,卡号是不合法的。
例如,号码4388576018402626是不合法的,但是号码43