Passer au contenu principal
Tangente
ArithmétiqueFormule · Glossaire
Lire en : Français

règle de Luhn

L'algorithme de Luhn, aussi appelé règle de Luhn, code de Luhn, formule de Luhn ou algorithme modulo 10, est une procédure de vérification numérique permettant de valider certains identifiants, notamment les numéros de cartes bancaires ou les numéros SIRET. Cet algorithme ne garantit pas la sécurité contre des attaques intentionnelles ; il est uniquement conçu pour détecter des erreurs accidentelles de saisie ou de transmission. Il fut mis au point dans les années 1960 par Hans Peter Luhn, ingénieur allemand travaillant pour IBM. Le calcul se déroule de la façon suivante : on parcourt les chiffres du numéro de droite à gauche ; les chiffres en position impaire (en commençant par le dernier) sont conservés tels quels ; les chiffres en position paire sont multipliés par 2, et si le résultat dépasse 9, on lui soustrait 9 ; on additionne ensuite tous les chiffres ainsi obtenus. Le numéro est valide si et seulement si cette somme est un multiple de 10.
Calcul de Luhn pour la suite 79927398713 Les chiffres, leurs rangs depuis la droite et leurs valeurs transformées sont alignés. La somme finale vaut 70. Chiffres Rang depuis la droite Valeur retenue 799 273 987 13 11109 876 543 21 797 973 946 72 Somme = 70 — multiple de 10
Les rangs pairs sont doublés puis réduits si besoin ; les onze valeurs obtenues totalisent exactement 70.
Sommaire

Ce que vous allez apprendre

  • Repérer depuis la droite les chiffres à conserver et ceux à doubler.
  • Vérifier la suite 79927398713 en obtenant une somme égale à 70.
  • Interpréter exactement le verdict de divisibilité par 10.
  • Distinguer la conformité à Luhn d'une preuve d'existence ou de sécurité.

En clair

Un long numéro peut contenir une faute de frappe difficile à voir. La règle de Luhn transforme certains de ses chiffres, additionne les résultats et observe le dernier chiffre de la somme. Si cette somme se termine par 0, le numéro passe le test.
Ce contrôle sert notamment pour certains numéros de cartes bancaires et numéros SIRET. Il repère des erreurs accidentelles de saisie ou de transmission, mais ne prouve ni l'authenticité ni la sécurité du numéro.

Définition

L'algorithme de Luhn est une procédure de vérification de suites de chiffres. Également nommé règle de Luhn, code de Luhn, formule de Luhn ou algorithme modulo 10, il s'applique à certains identifiants, notamment des numéros de cartes bancaires et des numéros SIRET. Hans Peter Luhn, ingénieur allemand chez IBM, l'a mis au point dans les années 1960.
Le parcours commence au chiffre le plus à droite, qui occupe la première position. Les chiffres en position impaire sont conservés. Ceux en position paire sont doublés ; lorsque le produit dépasse 9, on lui retranche 9. La somme de toutes les valeurs obtenues décide du résultat : l'identifiant satisfait la règle si, et seulement si, cette somme est un multiple de 10.
Le verdict porte uniquement sur la conformité à ce calcul. La règle vise les erreurs accidentelles de saisie ou de transmission ; elle ne protège pas contre une modification intentionnelle et ne garantit pas la sécurité de l'identifiant.

Le principe

Pour une suite de chiffres dont le dernier chiffre est en position 1, parcourez les positions de droite à gauche. Conservez la valeur des positions impaires. Doublez celle des positions paires, puis retranchez 9 à tout résultat supérieur à 9.
Notons S la somme de ces valeurs transformées. Le critère de Luhn s'écrit S0(mod10)S\equiv 0\pmod{10} : la suite est valide exactement lorsque S est divisible par 10.

Quand l'utiliser

Le test demande une suite de chiffres ordonnée et la convention selon laquelle le chiffre le plus à droite occupe la position 1. Il faut aussi savoir que le type d'identifiant emploie bien la règle de Luhn. Le calcul produit un verdict de conformité, pas une preuve d'existence ou de sécurité.
Un numéro de carte bancaire ou un numéro SIRET concerné peut être contrôlé après retrait des séparateurs de présentation, sans changer l'ordre des chiffres. En revanche, une référence contenant des lettres ne fournit pas directement les données attendues. Si son format ne prévoit pas Luhn, il faut appliquer la règle de validation propre à ce format.

Un exemple, pas à pas

Testons la suite d'essai 79927398713.
Données :
La suite contient 11 chiffres.
Le chiffre final 3 occupe la position 1.
Le parcours s'effectue de droite à gauche.
1. Les chiffres en position impaire restent 3, 7, 9, 7, 9 et 7, lus depuis la droite.
2. Aux positions paires, les chiffres 1, 8, 3, 2 et 9 sont doublés. Ils donnent d'abord 2, 16, 6, 4 et 18.
3. Les produits supérieurs à 9 perdent 9 : 16 devient 7 et 18 devient 9. Dans l'ordre initial, les valeurs retenues sont 7, 9, 9, 4, 7, 6, 9, 7, 7, 2 et 3.
4. Leur somme vaut 7+9+9+4+7+6+9+7+7+2+3=707+9+9+4+7+6+9+7+7+2+3=70. Comme 70 est un multiple de 10, la suite satisfait la règle de Luhn.
5. Pour contrôler le verdict, remplaçons le dernier 3 par 4. Seule la dernière valeur augmente d'une unité : la somme devient 71, qui n'est pas un multiple de 10. Aligner chaque chiffre avec son rang et sa valeur transformée rend le contrôle reproductible.

En pratique

Lors de la saisie d'un numéro de carte bancaire concerné, le test peut signaler immédiatement une faute accidentelle. S'il échoue, le bon geste consiste à relire les chiffres saisis ; s'il réussit, d'autres contrôles restent nécessaires pour établir la sécurité.
Pour un numéro SIRET concerné, le même calcul fournit un contrôle numérique reproductible. Si la donnée contient des caractères inattendus ou ne respecte pas le format prévu, la vérification du format doit précéder le test de Luhn.
Après transmission d'une suite, comparer le résultat de Luhn avant et après réception peut révéler une altération accidentelle. Pour une référence qui n'emploie pas cette règle, il faut choisir le contrôle défini par son propre format.

À ne pas confondre

Conformité à Luhn et sécurité. Une somme multiple de 10 établit seulement que la suite satisfait le critère. Une suite construite ou modifiée intentionnellement peut aussi le satisfaire : le test n'est donc pas une protection contre une attaque.
Conformité à Luhn et validité complète d'un identifiant. Le premier verdict dépend d'un calcul sur les chiffres. Le second peut exiger d'autres règles propres au format ; réussir Luhn ne suffit donc pas, à lui seul, à établir qu'un identifiant existe.

Limites et pièges

Modification intentionnelle. Le symptôme trompeur est une somme multiple de 10 malgré une suite fabriquée. Il faut alors employer un dispositif de sécurité adapté, car Luhn ne garantit rien contre une attaque.
Deux erreurs qui se compensent. Dans l'exemple, remplacer le premier 7 par 8 ajoute 1 et le dernier 3 par 2 retranche 1. La nouvelle suite 89927398712 totalise encore 70. Le test peut donc laisser passer plusieurs changements ; il faut comparer la donnée à sa source.
Mauvais sens de comptage. Si la position 1 n'est pas attribuée au chiffre le plus à droite, les chiffres doublés changent et le verdict peut être faux. Le bon réflexe est de marquer d'abord les rangs depuis la droite.
Seuil du verdict. Une somme de 70 est recevable, tandis qu'une somme de 71 ne l'est pas : être proche d'un multiple de 10 ne compte pas. Il faut obtenir exactement un multiple de 10.

Pour aller plus loin

algorithme — Situe la règle de Luhn parmi les procédures finies qui transforment des données en résultat vérifiable.
arithmétique modulaire — Éclaire le rôle du reste modulo 10 dans le verdict final.
congruence modulo n — Formalise l'écriture selon laquelle la somme est congrue à zéro modulo 10.
Continuez avec Tangente

Explorez les mathématiques autrement

Retrouvez nos magazines, podcasts et jeux pour explorer les mathématiques autrement.

Découvrir les offres