MPE34 Algorithme de Luhn

[Le 34e article, un peu technique, est consacré à l’algorithme de Luhn, qui est utilisé, en particulier, pour faire une première vérification des cartes bancaires.
Demain, nous parlerons des formats de papier avec la Série A.]

Algorithme de Luhn

(on dit aussi formule de Luhn, code de Luhn, algorithme modulo 10 ou algorithme mod 10) Algorithme permettant de calculer une somme de contrôle qui sert à valider différents numéros de compte comme les numéros de cartes bancaires, les numéros SIRET, les numéros d’assurance sociale canadiens, les numéros IMEI,…

Une somme de contrôle est un nombre (1 chiffre dans le cas de l’algorithme de Luhn) que l’on ajoute à une suite de chiffres et qui est calculé à l’aide des chiffres de cette suite (elle ajoute de la redondance à la suite). Son recalcul quand on saisit cette suite ou qu’on la transmet permet de détecter les erreurs de saisie ou de transmission.

L’algorithme de Luhn a été inventé par Hans Peter Luhn (d’où son nom), un ingénieur IBM allemand.

Il ne permet pas de déterminer si un numéro de carte bancaire est attribué et encore moins si la carte est utilisable. Il permet seulement de détecter des erreurs de saisie et de faire une première vérification avant de faire une tentative de transaction.

L’algorithme

– On multiplie par 2 un chiffre sur 2 en commençant par l’avant-dernier et en allant de droite à gauche. Si le produit est plus grand que 9, on additionne les 2 chiffres du nombre obtenu ou on soustrait 9 du produit.

– On additionne tous les chiffres obtenus.

– On divise la somme obtenue par 10.

– Si le reste de la division est 0, le nombre original est valide.

Exemple

Vérification du numéro de carte bleue 4990 1102 0183 0859

Multiplication d’un chiffre sur 2 par 2 en commençant par l’avant-dernier :

9 inchangé -> 9

5 x 2 = 10 -> 1

8 inchangé -> 8

0 x 2 = 0 -> 0

3 inchangé -> 3

8 x 2 = 16 -> 7

1 inchangé -> 1

0 x 2 -> 0

2 inchangé -> 2

0 x 2 = 0 -> 0

1 inchangé -> 1

1 x 2 = 2 -> 2

0 inchangé -> 0

9 x 2 = 18 -> 9

9 inchangé -> 9

4 x 2 = 8 -> 8

Le total est : 9 + 1 + 8 + 0 + 3 + 7 + 1 + 0 + 2 + 0 + 1 + 2 + 0 + 9 + 9 + 8 = 60

La division par dix donne 6 avec le reste 0. Ce numéro est valide.

Pour en savoir plus

Anglais

Luhn algorithm or Luhn formula.

Allemand

Der Luhn-Algorithmus oder die Luhn-Formel,

Espagnol

El algoritmo de Luhn o fórmula de Luhn.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *