Passer au contenu

Calculateur de l'algorithme de Luhn - Validation de carte de crédit et IMEI

Calculateur Luhn mod 10 gratuit pour la validation de cartes de crédit, les vérifications IMEI et la vérification d'identité. Validez instantanément des numéros ou générez des données de test en ligne.

Calculateur de l'algorithme de Luhn

Action

Vérifier si votre nombre passe la validation Luhn mod 10

Calculateur de chargement...
📚

Documentation

Qu’est-ce que l’algorithme de Luhn ?

L’algorithme de Luhn, également appelé algorithme modulo 10, est une formule qui vérifie si une suite de chiffres peut constituer un numéro d’identification valide. Il sert à détecter les erreurs de saisie dans les numéros de carte bancaire, les numéros IMEI des téléphones et d’autres codes d’identification avant qu’elles ne provoquent une erreur. L’ingénieur d’IBM Hans Peter Luhn a décrit cette méthode dans un brevet déposé en 1954.

L’algorithme ne prouve pas qu’un numéro est réel ou actif. Il confirme seulement que les chiffres suivent le modèle attendu. Un numéro de carte peut passer le contrôle de Luhn tout en étant faux, expiré ou sans fonds.

Comment calculer une somme de contrôle de Luhn

Le contrôle s’effectue sur les chiffres d’un numéro, lus de droite à gauche.

  1. En commençant par le deuxième chiffre en partant de la droite, doubler un chiffre sur deux.
  2. Si le double d’un chiffre donne un nombre supérieur à 9, lui soustraire 9. (Cela revient à additionner les deux chiffres du résultat ; ainsi, 16 devient 1 + 6 = 7, ou, de manière équivalente, 16 − 9 = 7.)
  3. Additionner tous les chiffres : ceux qui ont été doublés, après ajustement, et ceux qui sont restés inchangés.
  4. Si la somme totale est divisible par 10, le numéro est valide. Sinon, il est invalide.

Lorsqu’une entreprise attribue de nouveaux numéros d’identification, elle applique les mêmes étapes à l’envers. Elle choisit tous les chiffres sauf le dernier, effectue le contrôle, puis choisit le dernier « chiffre de contrôle » de manière que le total soit divisible par 10.

Exemple détaillé : validation d’un numéro de carte

Prenons le numéro de test 4532015112830366.

  1. Chiffres de droite à gauche : 6, 6, 3, 0, 3, 8, 2, 1, 1, 5, 1, 0, 2, 3, 5, 4
  2. Doubler un chiffre sur deux : 6, 12, 3, 0, 3, 16, 2, 2, 1, 10, 1, 0, 2, 6, 5, 8
  3. Soustraire 9 de tout résultat supérieur à 9 : 6, 3, 3, 0, 3, 7, 2, 2, 1, 1, 1, 0, 2, 6, 5, 8
  4. Les additionner : 6+3+3+0+3+7+2+2+1+1+1+0+2+6+5+8 = 50
  5. 50 est divisible par 10, le numéro est donc valide.

Exemple détaillé : un numéro invalide

Prenons 490154203237517, un numéro de 15 chiffres au format utilisé par les numéros IMEI.

L’application des mêmes étapes donne une somme de 59. Comme 59 n’est pas divisible par 10, ce numéro est invalide.

Pour le rendre valide, il suffit de modifier le dernier chiffre. En testant chaque dernier chiffre possible, on constate que 8 porte la somme à 60, qui est divisible par 10. Ainsi, 490154203237518 est un numéro de Luhn valide, tandis que tout autre dernier chiffre de 0 à 9, à l’exception de 8, produit un numéro invalide.

Comment utiliser ce calculateur

La calculatrice propose deux modes, sélectionnés à l’aide des boutons d’action.

Valider vérifie un numéro au fur et à mesure de sa saisie. Il n’est pas nécessaire d’appuyer sur un bouton. Le résultat apparaît dès que le champ contient des chiffres, et une explication détaillée située en dessous indique pour chaque chiffre la valeur qu’il apporte après le doublement et la réduction, ainsi que la somme totale.

Générer construit un numéro qui passe le contrôle. Les chiffres déjà présents dans le champ sont conservés au début du nouveau numéro. La calculatrice complète le reste avec des chiffres aléatoires et ajoute le chiffre de contrôle. Le résultat comporte 16 chiffres, soit la longueur habituelle d’un numéro de carte de paiement, sauf si les chiffres fournis comportent déjà 16 chiffres ou plus ; dans ce cas, le résultat comporte un chiffre de plus que le nombre fourni.

Les espaces, les tirets et les points saisis sont ignorés ; « 4532 0151 1283 0366 » et « 4532-0151-1283-0366 » sont donc interprétés comme les mêmes chiffres sans séparateurs. Tout autre caractère, comme une lettre, est rejeté et un message d’erreur est affiché.

Où l’algorithme de Luhn est-il utilisé ?

  • Cartes de paiement. Visa, Mastercard, American Express et d’autres réseaux construisent leurs numéros de carte de manière à ce que le numéro complet passe le contrôle de Luhn. Les formulaires de paiement peuvent ainsi détecter un chiffre mal saisi avant de contacter le prestataire de paiement.
  • Numéros IMEI. L’identifiant de 15 chiffres attribué aux téléphones et autres appareils cellulaires comprend un chiffre de contrôle de Luhn.
  • Numéros d’assurance sociale canadiens. Le NAS de 9 chiffres utilise le même contrôle.
  • Identifiant national de fournisseur (NPI) des États-Unis. Les professionnels de santé américains reçoivent un NPI de 10 chiffres validé au moyen d’un contrôle fondé sur l’algorithme de Luhn.

Ce que l’algorithme de Luhn ne détecte pas

L’algorithme détecte toujours un chiffre mal saisi, quel que soit ce chiffre ou sa position. Il détecte aussi toute permutation de deux chiffres adjacents, comme la saisie de « 39 » au lieu de « 93 », sauf dans un cas précis : l’inversion d’un 0 et d’un 9 adjacents, par exemple lorsque « 09 » devient « 90 ».

Il ne détecte pas non plus trois erreurs dites « jumelles », dans lesquelles une paire répétée de chiffres est remplacée par une autre paire répétée : 22 lu comme 55, 33 lu comme 66, et 44 lu comme 77. Ces limites étant connues et restreintes, le contrôle de Luhn est fiable pour détecter les erreurs de saisie courantes, mais il n’est pas considéré comme un système complet de détection d’erreurs à lui seul.

Luhn n’est pas un contrôle de sécurité

Luhn a été conçu pour détecter les erreurs accidentelles de saisie, et non la fraude. Un numéro qui passe le contrôle est simplement bien formé sur le plan mathématique. La sécurité réelle des paiements repose sur d’autres niveaux ajoutés après le contrôle de Luhn, comme le code CVV de la carte, la vérification de l’adresse et l’authentification 3-D Secure. Luhn constitue simplement le premier filtre, le moins coûteux, exécuté avant ces contrôles plus lents.

Valider un numéro en JavaScript

1function isValidLuhn(number) {
2  const digits = number.replace(/\D/g, '').split('').map(Number);
3  if (digits.length === 0) return false;
4
5  let sum = 0;
6  let doubleDigit = false;
7  for (let i = digits.length - 1; i >= 0; i--) {
8    let d = digits[i];
9    if (doubleDigit) {
10      d *= 2;
11      if (d > 9) d -= 9;
12    }
13    sum += d;
14    doubleDigit = !doubleDigit;
15  }
16  return sum % 10 === 0;
17}
18

La vérification d’une entrée vide est importante : une chaîne vide a une somme de chiffres égale à 0, et 0 est divisible par 10 ; sans cette vérification, la fonction considérerait à tort une chaîne vide comme un numéro valide. Pour trouver un chiffre de contrôle au lieu d’en tester un, exécuter la même boucle sur les chiffres qui précèdent le chiffre de contrôle, en commençant toutefois le doublement par le dernier d’entre eux, puis calculer (10 - sum % 10) % 10.

Foire aux questions

À quoi sert l’algorithme de Luhn ?

Il vérifie si un numéro d’identification, comme un numéro de carte bancaire, un numéro IMEI ou un NAS canadien, est cohérent en interne. Il détecte les chiffres mal saisis ou inversés avant qu’ils ne provoquent une erreur de traitement.

Quelle est la précision de l’algorithme de Luhn pour détecter les erreurs ?

Il détecte tout chiffre mal saisi et presque tous les cas d’inversion de deux chiffres adjacents. La seule inversion qu’il ne détecte pas concerne 0 et 9 lorsqu’ils sont adjacents. Il ne détecte pas non plus trois substitutions « jumelles » précises : 22 à la place de 55, 33 à la place de 66, et 44 à la place de 77.

Un numéro de Luhn valide signifie-t-il que la carte est réelle ?

Non. Le contrôle confirme seulement que les chiffres correspondent au modèle attendu. Il ne dit rien sur l’existence de la carte, son activation ou la présence de fonds. Les entreprises ajoutent pour cela des contrôles distincts, comme celui du code CVV.

Le contrôle de Luhn peut-il être effectué sans ordinateur ?

Oui. Il ne nécessite que des multiplications par deux, des soustractions et des additions ; il peut donc être effectué à la main ou avec une simple calculatrice. Cela faisait partie de la conception initiale, prévue pour l’époque des cartes perforées, avant la généralisation des ordinateurs numériques.

Les numéros générés sont-ils de vrais numéros de carte ?

Non. Le générateur produit uniquement des suites de chiffres qui satisfont au contrôle de Luhn. Ils sont destinés à tester les formulaires de saisie. Aucune banque ne les a émis et ils ne peuvent pas être utilisés pour effectuer un paiement.

Pourquoi l’appelle-t-on algorithme modulo 10 ?

Parce que la dernière étape vérifie si la somme est exactement divisible par 10, ce qui s’écrit en mathématiques « somme modulo 10 = 0 ». « Mod » est l’abréviation de modulo, le reste obtenu après une division.

Qui a inventé l’algorithme de Luhn ?

Hans Peter Luhn, ingénieur chez IBM, l’a décrit dans une demande de brevet déposée en 1954, accordée en 1960 sous le brevet américain 2 950 048. Il est également connu pour ses premiers travaux sur l’indexation informatisée des textes.