Avec toutes les cartes (débit, crédit, assurance sociale, etc.) que l'homo numericus garde sur lui, et tous les numéros qu'elles comportent, on peut finir par angoisser. Qu'arriverait-il si, par exemple, quelqu'un tapait son numéro de carte de crédit sur un clavier en voulant acheter un produit en ligne, mais se trompait d'un ou de deux chiffres? Pourrait-il donner par erreur le numéro de carte de quelqu'un d'autre? Le vôtre?
Fort heureusement, la réponse est non. Ou du moins, les chances sont très minces grâce à une petite astuce mathématique qui permet de détecter les erreurs. Les chiffres d'un numéro de carte de crédit, en effet, ne sont pas choisis au hasard, mais doivent se plier à une condition, qui est de donner un résultat précis à la suite une série d'opérations mathématiques - fort simples, qu'on se rassure.
Considérons donc ce numéro de carte de crédit fictif : 4580 7614 8015 9323. Quand on le tape sur un clavier, que ce soit pour acheter quelque chose en ligne ou parce que la bande de la carte est démagnétisée, le serveur vérifie que le numéro saisi est valide en quelques étapes :
- D'abord, il additionne les chiffres de rang impair (soit le premier chiffre du numéro de la carte, plus le troisième, plus le cinquième, etc.) en commençant à partir de la droite.
- Ensuite, il multiplie par deux les chiffres de rang pair, puis additionne tous les chiffres des produits obtenus. Si un produit a deux chiffres, ceux-ci sont «séparés» : 16, par exemple, fera 1 + 6.
- Enfin, il additionne les deux sommes obtenues précédemment.
Si la compagnie de crédit utilise cet algorithme de vérification - il existe des variantes -, les chiffres du numéro de carte de crédit seront agencés de telle façon que le résultat final sera un multiple de 10. Autrement, le serveur saura qu'il y a eu une erreur dans la saisie du numéro et refusera la transaction.
Cette petite merveille s'appelle «algorithme de Luhn», du nom du savant allemand Hans Peter Luhn (1896-1964), qui l'a inventé dans les années 50 alors qu'il travaillait pour IBM. Ce n'est pas une protection à toute épreuve, puisque des erreurs multiples peuvent passer à travers ses mailles, mais la plupart des méprises n'impliquent qu'un seul chiffre. Pour celles-là, l'algorithme de Luhn fait parfaitement l'affaire.
Fait intéressant, ce code est également utilisé par le gouvernement fédéral pour nos numéros d'assurance sociale. Faites le test avec le vôtre, pour voir...
Comme le souligne Jocelyn Dagenais, de la commission scolaire Marie-Victorin, dans un article publié dans la revue Accromaths, un autre bel exemple de code détecteur d'erreur est le code à barres. Encore ici, il existe plusieurs variantes, mais le UPC-A, la version la plus répandue du Universal Product Code, est le plus fréquent.
Prenons donc le numéro apparaissant sur le calepin de notes dont l'auteur de ces lignes se sert dans son travail : 0 65800 53140 6. Le chiffre de gauche dénote le type d'UPC (0 correspondant au UPC-A), le premier bloc de cinq chiffres correspond au manufacturier, le second au produit en particulier, et le dernier chiffre, à droite, est la clé de vérification.
On peut s'assurer qu'un numéro UPC est valide en procédant comme suit :
- additionner les chiffres en position impaire, puis multiplier la somme par trois. Ici (0 + 5 + 0 + 5 + 1 + 0) x 3 = 33;
- additionner les chiffres en position paire, sauf la clé de vérification : 6 + 8 + 0 + 3 + 4 = 21;
- additionner les deux sommes précédentes, soit 33 + 21 = 54;
- additionner la clé de vérification à cette dernière somme, soit 54 + 6 = 60.
Si le numéro UPC est valide, le résultat sera un multiple de 10.
Rien de bien compliqué donc, quand on s'y met, mais avouez tout de même que vous n'auriez jamais cru traîner autant de maths dans votre portefeuille, n'est-ce pas?
Source : JOCELYN DAGENAIS. «Codes numériques, codes-barres», Accromaths, vol. 1, été-automne 2006. www.accromaths.ca










