Tous les articles

L'algorithme de Luhn : comment on vérifie la validité d'un numéro de carte

Le dernier chiffre d'un numéro de carte n'est pas choisi au hasard : c'est une clé de contrôle conçue pour repérer le type d'erreur que l'on commet en recopiant à la main un long numéro dans un formulaire.

Comment fonctionne l'algorithme de Luhn

L'algorithme parcourt les chiffres de droite à gauche, double un chiffre sur deux, et retranche 9 au résultat s'il dépasse 9. Si le numéro a été saisi correctement, la somme de tous les chiffres obtenus est un multiple de 10.

Une invention d'IBM des années 1950, pas de Visa ou Mastercard

L'algorithme porte le nom de Hans Peter Luhn, chercheur chez IBM qui l'a breveté en 1954 comme méthode générale de détection des erreurs de transcription dans une suite de chiffres, sans lien direct avec les cartes bancaires à l'origine. Les réseaux de paiement l'ont adopté ensuite car il est peu coûteux à calculer et détecte les deux erreurs manuelles les plus fréquentes : un chiffre mal saisi ou deux chiffres voisins intervertis.

Pourquoi une clé de Luhn valide ne prouve pas qu'une carte existe

La vérification de Luhn confirme uniquement la structure mathématique du numéro, pas l'existence d'un compte réel derrière. Il est trivial de générer des millions de numéros qui passent ce contrôle sans qu'aucun ne soit rattaché à une vraie carte — chaque paiement réel doit donc toujours transiter par la banque émettrice pour la vérification qui compte vraiment.

À quoi ça sert

  • Repérer un numéro de carte mal saisi avant d'envoyer un formulaire au serveur.
  • Écarter rapidement une erreur de frappe lors de la saisie manuelle d'un long numéro.
  • Comprendre précisément ce que la vérification de Luhn prouve, et ce qu'elle ne prouve pas.

Identifier le réseau de paiement à partir du numéro (BIN)

Les premiers chiffres d'un numéro de carte forment le BIN (Bank Identification Number), qui identifie le réseau de paiement avant même le contrôle de Luhn complet. Les numéros Visa commencent par 4, ceux de Mastercard par la plage 51–55 ou la plage plus récente 2221–2720, et ceux d'American Express par 34 ou 37. C'est grâce à ce préfixe qu'un formulaire de paiement affiche la bonne icône de réseau pendant même que l'utilisateur tape encore son numéro.

Essayer l'outil