银行卡的校验方式

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: 小  |  中  |  大  |  超大  

前言

银行金卡,维萨和万事达、银联品牌,如果是贷记卡或准贷记卡,一定为16位卡号。而借记卡可以16-19位不等。

美国运通卡则不论金卡或是白金卡、普通卡,都是15位卡号。

16-19 位卡号校验位采用 Luhm 校验方法计算

银行卡的校验方式Luhm校验将未带校验位的 15 位卡号从右依次编号 1 到 15,位于奇数位号上的数字乘以 2将奇位乘积的个十位全部相加,再加上所有偶数位上的数字将加法和加上校验位能被 10 整除。<?php/*

16-19 位卡号校验位采用 Luhm 校验方法计算:

1,将未带校验位的 15 位卡号从右依次编号 1 到 15,位于奇数位号上的数字乘以 2

2,将奇位乘积的个十位全部相加,再加上所有偶数位上的数字

3,将加法和加上校验位能被 10 整除。

*/

function luhm($s) {

$n = 0;

for ($i = strlen($s); $i >= 1; $i--) {

$index=$i-1;

//偶数位

if ($i % 2==0) {

$n += $s{$index};

} else {//奇数位

$t = $s{$index} * 2;

if ($t > 9) {

$t = (int)($t/10)+ $t%10;

}

$n += $t;

}

}

return ($n % 10) == 0;

}

$r = luhm('6225881414207430');

var_dump($r);

?>

准确率怎么样,附文一片

银行卡校验规则(Luhn算法)

本文链接 :http://blog.newbmiao.com/2015/09/25/use-luhm-to-validate-bank-card.html

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航