Code de Luhn
Voici la démo et l'implémentation JS du code de Luhn que j'apprécie pour sa simplicité à vérifier des erreurs de saisie.
Génération du code
Nombre initial : Résultat :
Validation d'un code
Nombre à vérifier : Résultat du test :
//Vérifie que le paramètre d'entrée est valide au sens du code de Luhn. Renvoie true ou false en fonction du résulat.
function checkLuhnCodeValidity(srcNumber) {
srcNumber = ""+srcNumber;
var Total = 0;
for(var i=0; i<srcNumber.length; i++) {
var CurDigit = parseInt(srcNumber[srcNumber.length - 1 - i]);
if (isNaN(CurDigit)) return false;
CurDigit = i%2 ? CurDigit*2 : CurDigit;
if (CurDigit > 9) CurDigit -= 9;
Total += CurDigit;
}
return Total % 10 == 0;
}
//Renvoie le chiffre, aka le code de Luhn, qu'il faut ajouter à la variable d'entrée pour que l'ensemble soit valide au sens du code de Luhn.
function computeValidLuhnCode(srcNumber) {
for(var i=0; i<=9; i++) {
var TestNumber = ""+srcNumber+i;
if (checkLuhnCodeValidity(TestNumber)) return i;
}
return false; //srcNumber n'est pas un nombre (peut-être la variable contient-elle des lettres ou d'autres codes ?)
}
