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, aussi appelé algorithme modulo 10, est une formule qui vérifie si une suite de chiffres peut être 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 la 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.

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 à 15 chiffres attribué aux téléphones et aux autres appareils cellulaires comporte un chiffre de contrôle de Luhn.
  • Numéros d’assurance sociale canadiens. Le NAS de 9 chiffres utilise le même contrôle.
  • National Provider Identifier (NPI) américain. Les prestataires de soins aux États-Unis reçoivent un NPI à 10 chiffres, validé par 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  let sum = 0;
4  let doubleDigit = false;
5  for (let i = digits.length - 1; i >= 0; i--) {
6    let d = digits[i];
7    if (doubleDigit) {
8      d *= 2;
9      if (d > 9) d -= 9;
10    }
11    sum += d;
12    doubleDigit = !doubleDigit;
13  }
14  return sum % 10 === 0;
15}
16

Questions fréquentes

À 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.

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.

Références

  1. Hans Peter Luhn (IBM). Computer for Verifying Numbers, brevet américain 2 950 048. Brevet américain 2 950 048 sur Google Patents — brevet de Luhn, déposé le 6 janvier 1954 et accordé le 23 août 1960.
  2. 3GPP / ETSI. TS 123 003: Numbering, addressing and identification. ETSI TS 123 003 V17.8.0 — le chiffre de contrôle de l’IMEI est calculé avec la formule de Luhn.
  3. Centers for Medicare & Medicaid Services. Requirements for National Provider Identifier (NPI) and NPI Check Digit. Exigences du CMS sur le chiffre de contrôle du NPI — le chiffre de contrôle du NPI utilise la formule de Luhn modulo 10, également employée pour les numéros d’émetteurs de cartes.