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

藏色散人
Libérer: 2023-04-10 11:52:01
avant
4315 Les gens l'ont consulté

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
Copier après la connexion

é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
Copier après la connexion

É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
Copier après la connexion

. 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;
        }
    }
Copier après la connexion

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!

Étiquettes associées:
php
source:learnku.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal