Maison >développement back-end >tutoriel php >Résumé de l'algorithme général de vérification des numéros de cartes bancaires en PHP

Résumé de l'algorithme général de vérification des numéros de cartes bancaires en PHP

藏色散人
藏色散人avant
2021-07-26 15:23:404339parcourir

Récemment, en raison des besoins de l'entreprise, j'ai écrit quelques informationsAPI Dans lesquelles j'avais besoin de quelques informations sur le numéro de carte bancaire Concernant cette règle de vérification, j'ai trouvé beaucoup de vérifications générales, comme le nombre de chiffres. J'ai découvert qu'un ami avait écrit une introduction plus détaillée. Un bref résumé des règles de génération de carte bancaire

Algorithme LUHN

L'algorithme de contrôle de Luhn, également connu sous le nom de formule du module 10, est un algorithme simple utilisé pour vérifier la validité de. cartes bancaires et numéros de carte de crédit. Fonctionne avec les cartes de crédit émises par toutes les principales sociétés de cartes de crédit, notamment American Express, Passport, MasterCard, Discover et Diners Club. Cet algorithme a été formulé à l'origine par un groupe de mathématiciens dans les années 1960. Désormais, l'algorithme du numéro de test de Luhn appartient au public et tout le monde peut l'utiliser

Principe de l'algorithme de Luhn

Supposons que vous ayez maintenant un numéro de carte China Merchants Bank6225882708965808 ( Les numéros de carte bancaire grand public nationaux comportent généralement 16 ou 19 chiffres)

Étape 1

commencer par le dernier chiffreinverse Calculerla somme des chiffres impairs

calculer le numéro de carte comme ci-dessus

8 + 8 + 6 + 8 + 7 + 8 + 5 + 2 = 52

étapes deux

Commencer à partir du dernier chiffreInverser Multipliez d'abord le nombre pair chiffres2 Si le produit est à 2 chiffres, soustrayez9 Dans la sommation, si le produit n'est pas à 2 chiffres, ajoutez directement

comme ci-dessus Le numéro de carte est calculé comme suit

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

Étape 3

Ajoutez la somme des chiffres impairs à la somme des chiffres pairs Si le résultat est divisible par 10, cela signifie que la vérification est réussie

52 + 28 = 80
80 % 10 = 0

. Version PHP de l'algorithme 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;
        }
    }

S'il y a des erreurs, veuillez les signaler

Bien sûr, vous devez faire un jugement avant de faire cela, pensez à votre propre maison. Enfin, cela n’est pas applicable à 100% à tous les numéros de cartes bancaires.

Apprentissage recommandé : "Tutoriel vidéo PHP"

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer