寂井浮廊
打赏我
欢迎您: 
游客
   
登录
  发现BUG请联系jintianhu2000@126.com
常用
加解密算法
常用工具
EMV相关
还珠楼论坛
答题闯关
用户信息
帖子列表
语法介绍
帖子详情
银行卡号校验规则(Luhn算法)
jin.th 发布于2019-10-16 17:12
[评论区]
[我要回复]
[下载md文件]
[下载pdf文件]
仅自己可见
Luhn算法由IBM的Hans Peter Luhn发明,又称为“模10”算法,是一种简单的校验和算法,用来验证识别号,一般会被用于身份证号码,信用卡号、IMEI号、社会保险号的验证。它的算法简单,并只采用最后一位数字作为校验位,可以有效防止偶然的输入性错误。 Luhn算法只能用于简单的校验,不能用于加密算法。Luhn算法可以检测到以下输入性错误:所有的单位数字错误,如 210写作215;能检测到绝大多数的临位错位,比如315写作351,但是只有两位的情况下无法检测,比如09写作90;能够检测双数字写错10种的7 种,比如11写为22,但是有3种无法检测,如22和55、33和66、44和77。 如果对校验有更高的要求,可以考虑功能更强大但也更复杂的Verhoeff算法。 按照Luhn算法,不存在两张银行卡的卡号只有最后一位不同的情况,这样也是为了防止大家消费、转账时输错卡号。比如某人的卡号是6222300456537730,那么6222300456537731-6222300456537739的卡号都是不合法的。 ## 校验的过程 1、从卡号最后一位数字开始,逆向将奇数位(1、3、5等等)相加。 2、从卡号最后一位数字开始,逆向将偶数位数字,先乘以2(如果乘积为两位数,则将其减去9),再求和。 3、将奇数位总和加上偶数位总和,结果应该可以被10整除。 举个例子,以卡号5**4**3**2**1**2**3**4**5**6**7**8**8**8**8**1**为例子,粗体的是奇数位 逆向奇数位之和=`1+8+8+6+4+2+2+4`=35 逆向偶数位乘2减9之和=`7(8*2-9)+7(8*2-9)+5(7*2-9)+1(5*2-9)+6(3*2)+2(1*2)+6(3*2)+1(5*2-9)`=35 奇数位总和+偶数位总和=35+35=70,可以被10整除,所以校验通过。如果最终结果不能被10整除,就检验失败。 这里有[工具](/Tools1/Format.aspx)可以校验
评论列表
回帖
浙ICP备17051204号