ホームページ > バックエンド開発 > PHPチュートリアル > PHP における銀行カード番号の一般的な検証アルゴリズムの概要

PHP における銀行カード番号の一般的な検証アルゴリズムの概要

藏色散人
リリース: 2023-04-10 11:52:01
転載
4320 人が閲覧しました

最近、会社のニーズにより、銀行カード番号情報が必要な API を作成しました。この検証ルールに関しては、番号のプルなどの一般的な検証が多数見つかりました。そして後で、友人が銀行カードを生成するためのルールについて比較的詳細な紹介文を書いており、その短い要約を作成していることに気づきました。

LUHN アルゴリズム

チェック デジット アルゴリズム (Luhn Check)数字アルゴリズム) とも呼ばれます。モジュラス 10 式は、銀行カードおよびクレジット カード番号の有効性を検証するために使用される単純なアルゴリズムです。 American Express、Passport、MasterCard、Discover、Diners Club など、すべての主要なクレジット カード会社が発行したクレジット カードに対応しています。このアルゴリズムは、もともと 1960 年代に数学者のグループによって定式化されました。現在、ルーン テスト数値アルゴリズムは一般に公開されており、誰でも使用できます

#ルーン アルゴリズムの原理

中国招商銀行のカード番号を持っているとします

6225882708965808 (国内の主流の銀行カード番号は通常 16 桁または 19 桁です)

ステップ 1

最後の桁から開始

逆方向 奇数 桁の合計を計算

たとえば、上のカード番号を次の

8 + 8 + 6 + 8 + 7 + 8 + 5 + 2 = 52
ログイン後にコピー
# に計算します。

## ステップ 2最後の桁から開始

逆方向

最初の 偶数 桁に 2 を掛けます。積が 2 桁 の場合、9 を引きます。 合計するとき、積が 2 桁 でない場合は、直接加算します。 たとえば、カードを計算します。上の数値を次の値に置き換えます

0 * 2 = 0
5 * 2 = 10 - 9 = 1
9 * 2 = 18 - 9 = 9
0 * 2 = 0
2 * 2 = 4
8 * 2 = 16 - 9 = 7
2 * 2 = 4
6 * 2 = 12 - 9 = 3
最后计算结果
0 + 1 + 9 + 0 + 4 + 7 + 4 + 3 = 28
ログイン後にコピー

ステップ 3

奇数桁の合計と偶数桁の合計を加算し、結果が 10 で割り切れれば検証は合格です。

52 + 28 = 80
80 % 10 = 0
ログイン後にコピー

PHP バージョンの luhn アルゴリズム
    function checkLuhn($card){
        $len=strlen($card);
        $all=[];
        $sum_odd=0;
        $sum_even=0;
        for($i=0;$i<$len;$i++){
            $all[]=substr($card,$len-$i-1,1);
        }
        //all 里的偶数key都是我们要相加的奇数位
        for($k=0;$k<$len;$k++){
            if($k % 2 ==0){
                $sum_odd+=$all[$k];
            }else{
                //奇数key都是要相加的偶数和
                if($all[$k] * 2 >= 10){
                    $sum_even+=$all[$k] * 2 - 9;
                }else{
                    $sum_even+=$all[$k]*2;
                }
            }
        }
        $total=$sum_odd+$sum_even;
        if($total % 10 == 0){
            return true;
        }else{
            return false;
        }
    }
ログイン後にコピー
間違いがある場合は、ご指摘ください

もちろん、次のようにする必要があります。自分の家について考えてみてください。最後に、これはすべての銀行カード番号に 100% 当てはまるわけではありません。

推奨学習: 「

PHP ビデオ チュートリアル

以上がPHP における銀行カード番号の一般的な検証アルゴリズムの概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
php
ソース:learnku.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート