Luhnin algoritmi

Luhnin algoritmi on yksinkertainen tarkistussumman laskemiseen käytetty kaava, jota käytetään varmistamaan erilaisia tunnistenumeroita kuten luottokortti- ja IMEI-numeroita. Algoritmin loi IBM:n tutkija Hans Peter Luhn, joka jätti patenttihakemuksen algoritmista 6. tammikuuta 1954. Patentti myönnettiin 23. elokuuta 1960. 

Algoritmi on public domainia, ja sitä käytetään tunnistamaan tahattomat numerosarjassa olevat virheet; algoritmia ei ole suunniteltu suojaamaan tahallista hyökkäystä vastaan.

 Tarkistusnumeron laskeminen 

Algoritmi varmistaa numeronsarjan oikeellisuuden erityisen tarkistusnumeron avulla. Yleensä tarkistusnumero liitetään varsinaisen numerojonon perään, jolloin ne yhdessä muodostavat halutun numerosarjan.

Tarkistusnumero lasketaan seuraavasti:
 Alkaen oikealta vasemmalle, kerrotaan järjestyksessä parittomat luvut kahdella ja parilliset yhdellä
 Summataan saatujen tulojen yksittäiset numerot yhteen (16 => 1 + 6 = 7)
 Tarkistusnumero on kokonaisluku, joka pitää lisätä saatuun summaan, jotta se olisi tasan kymmenellä jaollinen

 Numerosarja 2 6 0 5 3 1 7 9 3 1 1 3 8 3  Kerroin x2 x2 x2 x2 x2 x2 x2 Tulo 2 12 0 10 3 2 7 18 3 2 1 6 8 6 Summaus 2+ 1+2+ 0+ 1+0+ 3+ 2+ 7+ 1+8+ 3+ 2+ 1+ 6+ 8+ 6 =53

Tässä tapauksessa tarkistusnumero on seitsemän ja koko numerosarja 260531793113837.

 Numerosarjan tarkistaminen 

Annettu numerosarja tarkistetaan seuraavasti:
 Alkaen oikealta vasemmalle, kerrotaan järjestyksessä parittomat luvut yhdellä ja parilliset kahdella
 Summataan saatujen tulojen yksittäiset numerot yhteen (16 => 1 + 6 = 7)
 Jos saatu summa on tasan jaollinen kymmenellä, numerosarja on todennäköisesti virheetön

 Numerosarja 2 6 0 5 3 1 7 9 3 1 1 3 8 3 7 Kerroin x2 x2 x2 x2 x2 x2 x2 Tulo 2 12 0 10 3 2 7 18 3 2 1 6 8 6 7 Summaus 2+ 1+2+ 0+ 1+0+ 3+ 2+ 7+ 1+8+ 3+ 2+ 1+ 6+ 8+ 6+ 7=60

 Aiheesta muualla 
Espacenet: Yhdysvaltalainen patentti US2950048 Hans P. Luhn, Computer for verifying numbers 

Luokka:Algoritmit