La Algoritmo de Luhn aŭ formulo de Luhn, ankaŭ konata kiel algoritmo "modulo 10" aŭ "mod 10", nomita laŭ ĝia kreinto, Hans Peter Luhn inĝeniero ĉe IBM, estas simpla kontrolcifera formulo uzata por validigi diversajn identigajn numerojn, kiel tiujn de kreditkartoj, poŝtelefonoj (numeroj IMEI, SIM-kartoj), malsanokosta asekuro en Usono, Kanado, Grekio, k.a., identigaj numeroj de Sud-Afriko, de Israelo kaj enketaj kodoj aperantaj sur kvitancoj de McDonald's, Taco Bell kaj Tractor Supply. Ĝi estas priskribita en la usona patento n-ro 2.950.048, prezentita la 6-an de januaro 1954 kaj atribuita la 23-an de aŭgusto 1960.
La algoritmo procedas en tri etapoj.
Ni konsideru la identigon de la numero 972-487-086. La unua etapo estas duobligi ĉiun duan ciferon de la antaŭlasta ĝis la komenco, kaj adicii ĉiujn ciferojn, duobligitajn aŭ ne (se cifero estas pli granda ol 9, ni subtrahas 9, do la 3-a linio). La sekva tabelo montras ĉi tiun etapon (koloraj linioj indikas duobligitajn ciferojn):
Ciferoj | Sumo | ||||||||
---|---|---|---|---|---|---|---|---|---|
9 | 7 | 2 | 4 | 8 | 7 | 0 | 8 | 6 | |
9 | 14 | 2 | 8 | 8 | 14 | 0 | 16 | 6 | |
9 | 5 | 2 | 8 | 8 | 5 | 0 | 7 | 6 | 50 |
La sumo, egala al 50, estas dividita per 10: la resto estas 0, do la nombro validas.
Se erare oni inversigis du ciferojn, la kontrolcifero de Luhn fariĝas malĝusta (krom se ĉi tiuj du ciferoj estas 0 kaj 9):
Ciferoj | Sumo | ||||||||
---|---|---|---|---|---|---|---|---|---|
9 | 2 | 7 | 4 | 8 | 7 | 0 | 8 | 6 | |
9 | 4 | 7 | 8 | 8 | 14 | 0 | 16 | 6 | |
9 | 4 | 7 | 8 | 8 | 5 | 0 | 7 | 6 | 54 |
La sumo ne estas dividebla per 10 do la nombro ne validas.