php銀行卡校驗


前言
銀行金卡,維薩和萬事達、銀聯品牌,如果是貸記卡或准貸記卡,一定為16位卡號。而借記卡可以16-19位不等。
美國運通卡則不論金卡或是白金卡、普通卡,都是15位卡號。
16-19 位卡號校驗位采用 Luhm 校驗方法計算

銀行卡的校驗方式

Luhm校驗

  1. 將未帶校驗位的 15 位卡號從右依次編號 1 到 15,位於奇數位號上的數字乘以 2
  2. 將奇位乘積的個十位全部相加,再加上所有偶數位上的數字
  3. 將加法和加上校驗位能被 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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM