Lūna algoritms
Lūna algoritms (angļu: Luhn algorithm, vācu: Luhn-Algorithmus) jeb Lūna formula (angļu: Luhn formula, vācu: Luhn-Formel) ir vienkārša kontrolsummas formula, ko izmanto, lai pārbaudītu dažādu identifikācijas numuru korektumu. To izmanto, piemēram, maksājumu karšu numuros un IMEI numuros. To radīja IBM zinātnieks Hanss Peters Lūns un to apraksta ASV patents nr. 2950048[novecojusi saite], pieteikts 1954. gada 6. janvārī, piešķirts 1960. gada 23. augustā.
Algoritms ir neaizsargāts darbs un tiek plaši izmantots arī mūsdienās. Tas nav paredzēts izmantošanai kriptogrāfijā, jo tika izstrādāts, lai aizsargātos pret nejaušām kļūdām, nevis ļaunprātīgiem uzbrukumiem.
Apraksts
[labot šo sadaļu | labot pirmkodu]Formula pārbauda skaitli pret tajā iekļautu kontrolciparu, kas parasti tiek pievienots galā daļējam konta numuram, tādējādi izveidojot pilnu konta numuru. Konta numuram ir jāiztur sekojoša pārbaude:
- No labējā cipara, kas ir kontrolcipars, pārvietojoties pa kreisi, dubulto katra otrā cipara vērtību; ja šīs darbības rezultāts ir lielāks par 9 (piemēram, 8 × 2 = 16), saskaita rezultāta skaitļa abus ciparus (piemēram, 16: 1 + 6 = 7, 18: 1 + 8 = 9).
- Saskaita visus ciparus.
- Ja šīs summas dalījuma ar 10 atlikums ir 0, skaitlis pēc Lūna formulas ir korekts, pretējā gadījumā - nav korekts.
Pieņemsim, ka mums ir konta numurs "7992739871", kuram galā vajag pievienot kontrolciparu, izveidojot galīgo konta numuru pēc šablona 7992739871x.
Konta numurs | 7 | 9 | 9 | 2 | 7 | 3 | 9 | 8 | 7 | 1 | x | |
---|---|---|---|---|---|---|---|---|---|---|---|---|
Dubultojam katru otro | 7 | 18 | 9 | 4 | 7 | 6 | 9 | 16 | 7 | 2 | - | |
Skaitļu summa | 7 | 9 | 9 | 4 | 7 | 6 | 9 | 7 | 7 | 2 | =67 |
Kontrolcipars (x) atbilst dalīšanas ar 10 atlikumam no skaitļu summas, reizinātas ar 9. Tātad, pēc piemēra, 67 × 9 mod 10 = 3, iegūstam galīgo konta numuru "79927398713". Alternatīva metode ir paņemt summas skaitļa (67) labējo ciparu (7) un atņemt to no 10: 10 - 7 = 3.
Implementācijas
[labot šo sadaļu | labot pirmkodu]- C implementācija
- PHP implementācija
- JavaScript implementācija Arhivēts 2015. gada 26. martā, Wayback Machine vietnē.