1. Ce site utilise des cookies. En continuant à utiliser ce site, vous acceptez l'utilisation des cookies. En savoir plus.
  2. Bonjour tout le monde ! Veillez consulter la Politique de forum pour comprendre nos règles, Merci a vous !
    Rejeter la notice

Algo de Luhn

Discussion dans 'Windev' créé par gapplicat, Mar 12, 2018.

  1. gapplicat

    gapplicat Well-Known Member
    MEMBRE WX

    Inscrit:
    Mar 8, 2018
    Messages:
    399
    J'aime reçus:
    703
    :)

    Outils de vérification de numéros par l'algo de Luhn.

    L'algorithme de Luhn (modulo 10 ou mod 10) est une formule de validation de nombres utilisée notamment pour les cartes bancaires

    Le code n'est pas de moi, mais j'utilise cette procédure tou

    Code (Windev):

    FONCTION bVérifierCléLuhn(nCB)
    // Fonction qui permet de vérifier que le numéro de carte bancaire saisi est correct
    // ENTREE : nCB : Numéro de la carte

        sNuméroCB     est une chaîne = nCB
        nLongueur     est un entier = 0         // Nombre de chiffres du code
        nIndice          est un entier = 0
        nCheck           est un entier
        nNum         est un entier

    // Vérifier la taille du numéro
    nLongueur =

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (sNuméroCB)

    // La taille est incorrecte
    SI nLongueur = 0 OU nLongueur <> 16 ALORS RENVOYER Faux

    // Le numéro ne contient que des "0"
    SI sNuméroCB =

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    ("0", 16) ALORS RENVOYER Faux


    nTaille est un entier =

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (sNuméroCB)
    // Tester si chaque caractère est bien un chiffre
    POUR nIndice = 1 A nTaille
        // Le numéro contient un 0 ou un caractère
        SI

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (sNuméroCB[[nIndice]]) = 0 ET sNuméroCB[[nIndice]] <> "0" ALORS RENVOYER Faux
    FIN

    // Déterminer la validité du code selon l'algorithme de la clé de Luhn
    // Comptage de la premiére série de nombres
    // XXXXXXXXXX
    // x x x x x
    // Somme de cette série pour obtenir eCheck
    POUR nIndice = nLongueur A 1 PAS -2
        nNum =

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (sNuméroCB[[nIndice A nIndice]])
        nCheck += nNum
    FIN

    // Comptage de la seconde série de nombres
    // XXXXXXXXXX
    // x x x x x
    // Somme de la multiplication par deux (-9 si cette multiplication est supérieure à 9)
    // de cette série pour obtenir eCheck
    POUR nIndice = nLongueur-1 A 1 PAS -2
        nNum =

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (sNuméroCB[[nIndice A nIndice]])
        nNum = nNum * 2
        SI nNum > 9 ALORS
            nCheck += nNum - 9
        SINON
            nCheck += nNum
        FIN
    FIN

    // La somme totale doit être un multiple de 10 pour que ce numéro soit correct
    SI modulo(nCheck,10) <> 0 ALORS RENVOYER Faux

    // Le N° de la carte bancaire est correct
    RENVOYER Vrai
     
     
  2. gelop4

    gelop4 Member
    MEMBRE WX

    Inscrit:
    Fev 7, 2018
    Messages:
    48
    J'aime reçus:
    86
    L'algo est celui-ci;

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!



    Edit : Fusion de massages similaires
     
    joker et Germanicus aiment ça.

Partager cette page

Chargement...