前言
銀行金卡,維薩和萬事達、銀聯品牌,如果是貸記卡或准貸記卡,一定為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