I matematik og mere præcist i modulær aritmetik , Luhn formel anvendes til dets anvendelser i kryptologi . Den algoritme Luhn eller kode Luhn eller Luhn formel er også kendt som den algoritme " modulo 10" eller "mod 10". Det er en simpel formel kontrolsum (kontrolsum), der bruges til at validere en række kontonumre, såsom kreditkortnumre , socialforsikringsnumre, canadiske , IMEI-numre på mobiltelefoner samt til at beregne gyldigheden af et SIRET- nummer .
Det blev udviklet i 1960'erne af en tysk ingeniør hos IBM , Hans Peter Luhn , som en metode til validering af nummeridentifikation. Dens berygtethed stammer hovedsageligt fra vedtagelsen af kreditkortselskaber kort efter starten.
Algoritmen er i det offentlige domæne og bruges meget i dag. Det var ikke designet til at være en kryptologisk sikker hash-funktion ; det beskytter mod tilfældige fejl, ikke mod ondsindede angreb. De fleste kreditkort og mange offentlige id-numre bruger algoritmen som en enkel metode til at skelne gyldige tal fra samlinger af tilfældige tal.
Formlen genererer et kontrolciffer, som normalt føjes til et delvis ID-nummer for at generere et fuldt ID. Denne identifikator (fuldt nummer: delnummer og dets kontrolciffer) udsættes for følgende algoritme for at verificere dens gyldighed:
For at bestemme det kontrolciffer, der er tilføjet til slutningen af nummeret:
Eksempel:
Algoritmen fortsætter i tre trin.
Overvej identifikationen af nummeret 972-487-086. Det første trin består i at fordobles hvert andet ciffer fra den næstsidste til begyndelsen, og tilføje alle cifrene, fordobles eller ikke (hvis et ciffer er større end 9, vi trækker 9, d hvor 3 th linje). Følgende tabel viser dette trin (farvede linjer angiver dobbelt tal):
Figur | Sum | ||||||||
---|---|---|---|---|---|---|---|---|---|
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 |
Summen, der er lig med 50, divideres med 10: resten er 0, så tallet er gyldigt.
Hvis to cifre ved en fejl er blevet inverteret, bliver Luhn-koden forkert (medmindre disse to cifre er 0 og 9):
Figur | Sum | ||||||||
---|---|---|---|---|---|---|---|---|---|
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 |
Summen kan ikke deles med 10, så antallet er ikke gyldigt.
I Frankrig overholder SIRET-antallet af La Poste-virksomheder ikke Luhns algoritme. Stillingen ændrede status i 2010 og blev et aktieselskab . Alle La Poste-virksomheder har det samme SIREN-nummer "356.000.000". Da La Poste har mange virksomheder, og rækkevidden af mulige SIRET-numre ikke er bred nok, er reglen til kontrol af SIRET-nummer blevet ændret for dette firma. Under kontrollen skal den klassiske kontrol anvendes, så hvis den klassiske regel ikke er markeret, skal du kontrollere, at den enkle sum af SIRET-tallene er et multiplum af fem (officielt svar fra INSEE) (f.eks .: for La Postes hovedkontor SIRET-nummeret er 35600000000048. Det kontrollerer den klassiske formel, men ikke den anden regel; for oprettelsen af Rennes med SIRET-nummer 356 000 539 14285 er den klassiske regel KO, kontrollen med den anden regel er gyldig).
I Belgien (før anvendelsen af SEPA- standarden, der tilføjer "BE" og to cifre foran), verificeres bankkontonumrene ved den enkle MODULO 97-operation, det betyder, at de sidste to cifre er resten af divisionen med 97 af de andre cifre. Dette gælder også for såkaldte "strukturerede" kommunikationer (12 cifre) til interbankoverførsler.