基于Luhn算法的银行卡校验规则是什么


这篇文章主要介绍“基于Luhn算法的银行卡校验规则是什么”,在日常操作中,相信很多人在基于Luhn算法的银行卡校验规则是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”基于Luhn算法的银行卡校验规则是什么”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!当你输入信用卡号码的时候,有没有担心输错了而造成损失呢?其实可以不必这么担心,因为并不是一个随便的信用卡号码都是合法的,它必须通过Luhn算法来验证通过。1、从卡号最后一位数字开始,逆向将奇数位(1、3、5等等)相加。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.Luhn检验数字算法(Luhn Check Digit Algorithm),也叫做模数10公式,是一种简单的算法,用于验证银行卡、信用卡号码的有效性的算法。对所有大型信用卡公司发行的信用卡都起作用,这些公司包括美国Express、护照、万事达卡、Discov免费云主机域名er和用餐者俱乐部等。这种算法最初是在20世纪60年代由一组数学家制定,现在Luhn检验数字算法属于大众,任何人都可以使用它。算法:将每个奇数加倍和使它变为单个的数字,如果必要的话通过减去9和在每个偶数上加上这些值。如果此卡要有效,那么,结果必须是10的倍数。比如上图的卡号为3759 8765 4321 001 (15位),从最高位开始所有的奇数位相加,偶数为乘以2相加(偶数乘以2后如果大于10则两位数相加),把这些奇数和偶数都加在一起得到57.(57+3)%10 ==0 如果此卡满足被10整除,则有效位必定为3。针对目前提现成功(clear_success)的记录里面,统计卡号的位数和数量关系如下:
14 53815 47616 1088417 6818 439519 38070>20 504+位数少于14的卡号基本是外资银行,或小银行。位数少于14的卡号基本是外资银行,或小银行。***496748*** ** HSBC HSBCHKHHHKH***430259*** ** HSBC HSBCHKHHHKH***51878018*** ** Bank of East Asia Limited BEASHKHHXXX位数多于23的卡号大多是卡号包含字母或空格。62270014 **** 0045 *** CHINA CONSTRUCTION BANK **601382700 **** 9077 ** BANK OF CHINA FOSHAN BRANCH **如果是国内的主流银行(中、农、工、建、招、交等)基本都是基于16位或者19位的卡号。来看看提现成功(clear_success)里面的卡有多少满足Luhn规则针对16位美元个人用户 准确率:99.84%正确的卡号数量:3105 不正确的卡号数量 :14卡号45806509689007** is NOT valid卡号48620375555016** is NOT valid卡号54202100231152** is NOT valid卡号58890201075786** is NOT valid卡号62106200000456** is NOT valid卡号62129986037235** is NOT valid卡号62252017026526** is NOT valid针对19位美元个人用户 准确率:99.96%正确的卡号数量:10574 不正确的卡号数量 :13 其中3笔发生退票卡号60138214000567721** is NOT valid卡号60138217000662109** is NOT valid卡号60138220005824282** is NOT valid卡号60138220006014219** is NOT valid卡号60220001386050410** is NOT valid卡号62161132000004484** is NOT valid卡号62220212082154900** is NOT valid卡号62220836020035821** is NOT valid卡号63214140980000000** is NOT valid以上都是提现成功的卡号,可以看到基本都严格满足Luhn算法。卡号位数数量15 116 14917 418 6419 50220 3正确的卡号数量:622不正确的卡号数量:29 + 1 +4+64+314%卡填写违法了Luhn算法,也就是这部分卡号都是可以提前通过Luhn校验发现的。结论是我们可以在填写收款账户的时候,添加一种Luth算法的JS脚本检查用户填写的卡号存在问题。当然即时用户填写的卡号违法了该规则,我们仍然运行用户填写,但给出相应的警示内容(可能填错)。目前在收银台页面(Checkout.vm)针对信用卡的交易,校验的JS :isValidCardfunction函数就包含了Luth校验规则,必须严格按照该规则的卡才能提交表单。到此,关于“基于Luhn算法的银行卡校验规则是什么”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注百云主机网站,小编会继续努力为大家带来更多实用的文章!

相关推荐: php如何实现int转字节

这篇文章主要介绍了php如何实现int转字节的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇php如何实现int转字节文章都会有所收获,下面我们一起来看看吧。 php实现int转字节的方法:1、创建一个PHP示例文件;2、定义“pu…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 05/05 18:10
下一篇 05/05 18:10

相关推荐