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
L'algo est celui-ci; Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens! Edit : Fusion de massages similaires