Kalkulačka Luhnova algoritmu - Ověření kreditní karty a IMEI
Bezplatná kalkulačka Luhn mod 10 pro ověřování kreditních karet, kontrolu IMEI a ověřování identifikačních čísel. Okamžitě ověřte čísla nebo generujte testovací data online.
Kalkulačka Luhnova algoritmu
Zkontrolovat, zda vaše číslo projde ověřením Luhn mod 10
Dokumentace
Co je Luhnův algoritmus?
Luhnův algoritmus, nazývaný také algoritmus mod 10, je vzorec, který ověřuje, zda řetězec číslic může být platné identifikační číslo. Používá se k zachycení překlepů v číslech platebních karet, v číslech IMEI telefonů a v dalších identifikačních kódech dříve, než způsobí chybu. Inženýr společnosti IBM Hans Peter Luhn popsal tuto metodu v patentu podaném v roce 1954.
Algoritmus nedokazuje, že číslo skutečně existuje nebo je aktivní. Pouze potvrzuje, že číslice odpovídají očekávanému vzoru. Číslo karty může kontrolou podle Luhna projít, a přesto být falešné, prošlé nebo bez prostředků.
Jak vypočítat kontrolní součet podle Luhna
Kontrola pracuje s číslicemi čísla, které se čtou zprava doleva.
- Začněte druhou číslicí zprava a zdvojnásobte každou druhou číslici.
- Pokud zdvojnásobením číslice vznikne číslo větší než 9, odečtěte od něj 9. (Je to totéž jako sečíst dvě číslice výsledku, takže 16 se stane 1 + 6 = 7, případně ekvivalentně 16 − 9 = 7.)
- Sečtěte všechny číslice: zdvojené číslice po úpravě i číslice, které zůstaly beze změny.
- Pokud je celkový součet dělitelný 10, je číslo platné. Jinak je neplatné.
Když organizace vydává nová identifikační čísla, používá stejné kroky obráceně. Vybere všechny číslice kromě poslední, provede kontrolu a poté zvolí poslední „kontrolní číslici“ tak, aby byl celkový součet dělitelný 10.
Praktický příklad: ověření čísla karty
Vezměme testovací číslo 4532015112830366.
- Číslice zprava doleva: 6, 6, 3, 0, 3, 8, 2, 1, 1, 5, 1, 0, 2, 3, 5, 4
- Zdvojnásobte každou druhou číslici: 6, 12, 3, 0, 3, 16, 2, 2, 1, 10, 1, 0, 2, 6, 5, 8
- Od každého výsledku většího než 9 odečtěte 9: 6, 3, 3, 0, 3, 7, 2, 2, 1, 1, 1, 0, 2, 6, 5, 8
- Sečtěte je: 6+3+3+0+3+7+2+2+1+1+1+0+2+6+5+8 = 50
- 50 je dělitelné 10, takže číslo je platné.
Praktický příklad: neplatné číslo
Vezměme 490154203237517, což je 15místné číslo ve formátu používaném pro čísla IMEI.
Provedení stejných kroků dá součet 59. Protože 59 není dělitelné 10, je toto číslo neplatné.
Aby se stalo platným, stačí změnit poslední číslici. Vyzkoušení všech možných posledních číslic ukáže, že poslední číslice 8 zvýší součet na 60, které je dělitelné 10. 490154203237518 je tedy platné číslo podle Luhna, zatímco každá jiná poslední číslice od 0 do 9 (kromě 8) vytvoří neplatné číslo.
Kde se Luhnův algoritmus používá
- Platební karty. Visa, Mastercard, American Express a další karetní sítě vytvářejí čísla karet tak, aby celé číslo prošlo kontrolou podle Luhna. Platební formuláře tak mohou zachytit chybně zadanou číslici ještě před kontaktováním zpracovatele platby.
- Čísla IMEI. Identifikátor o 15 číslicích přidělovaný telefonům a dalším mobilním zařízením obsahuje kontrolní číslici podle Luhna.
- Kanadská čísla sociálního pojištění. 9místné SIN používá stejnou kontrolu.
- Americký národní identifikátor poskytovatele (NPI). Poskytovatelé zdravotní péče ve Spojených státech dostávají NPI o 10 číslicích, který se ověřuje kontrolou založenou na Luhnově algoritmu.
Co Luhnův algoritmus neodhalí
Algoritmus vždy odhalí jedinou chybně zadanou číslici bez ohledu na to, o kterou číslici jde nebo kde se nachází. Odhalí také každou záměnu sousedních číslic, například zadání „39“ místo „93“, s jedinou výjimkou: záměnou sousedících číslic 0 a 9, například změnou „09“ na „90“.
Neodhalí ani tři „dvojité“ chyby, při nichž je opakovaná dvojice číslic nahrazena jinou opakovanou dvojicí: 22 přečtené jako 55, 33 přečtené jako 66 a 44 přečtené jako 77. Protože jsou tyto mezery známé a omezené, je kontrola podle Luhna spolehlivá při odhalování běžných překlepů, ale sama o sobě se nepovažuje za úplný systém detekce chyb.
Luhnova kontrola není bezpečnostní kontrola
Luhnův algoritmus byl navržen k odhalování náhodných chyb při zadávání údajů, nikoli podvodů. Číslo, které kontrolou projde, je pouze matematicky správně utvořené. Skutečná bezpečnost plateb závisí na dalších vrstvách přidaných po kontrole podle Luhna, například na kódu CVV karty, ověření adresy a autentizaci 3-D Secure. Luhnova kontrola je jednoduše první a nejlevnější filtr, který se provádí před těmito pomalejšími kontrolami.
Ověření čísla v JavaScriptu
1function isValidLuhn(number) {
2 const digits = number.replace(/\D/g, '').split('').map(Number);
3 let sum = 0;
4 let doubleDigit = false;
5 for (let i = digits.length - 1; i >= 0; i--) {
6 let d = digits[i];
7 if (doubleDigit) {
8 d *= 2;
9 if (d > 9) d -= 9;
10 }
11 sum += d;
12 doubleDigit = !doubleDigit;
13 }
14 return sum % 10 === 0;
15}
16Často kladené otázky
K čemu se Luhnův algoritmus používá?
Ověřuje, zda je identifikační číslo, například číslo platební karty, číslo IMEI nebo kanadské SIN, vnitřně konzistentní. Odhaluje chybně zadané nebo prohozené číslice ještě předtím, než způsobí chybu při zpracování.
Jak přesný je Luhnův algoritmus při odhalování chyb?
Odhalí každou jednotlivou chybně zadanou číslici a téměř každý případ záměny dvou sousedních číslic. Jediná záměna, kterou neodhalí, je záměna sousedících číslic 0 a 9. Neodhalí také tři konkrétní „dvojité“ záměny: 22 místo 55, 33 místo 66 a 44 místo 77.
Znamená platné číslo podle Luhna, že karta je skutečná?
Ne. Kontrola pouze potvrzuje, že číslice odpovídají očekávanému vzoru. Neříká nic o tom, zda karta existuje, je aktivní nebo má prostředky. Organizace k tomu přidávají samostatné kontroly, například kontrolu kódu CVV.
Lze kontrolu podle Luhna provést bez počítače?
Ano. Vyžaduje pouze zdvojnásobování, odčítání a sčítání, takže ji lze provést ručně nebo s jednoduchou kalkulačkou. To bylo součástí původního návrhu, určeného pro éru děrných štítků, kdy digitální počítače ještě nebyly běžné.
Proč se nazývá algoritmus modulo 10?
Protože poslední krok ověřuje, zda je součet beze zbytku dělitelný 10, což se v matematice zapisuje jako „součet modulo 10 = 0“. „Mod“ je zkráceně modulo, tedy zbytek po dělení.
Kdo vynalezl Luhnův algoritmus?
Hans Peter Luhn, inženýr společnosti IBM, jej popsal v patentové přihlášce podané v roce 1954 (udělené v 1960 jako americký patent 2 950 048). Je znám také svou ranou prací na počítačovém indexování textu.
Reference
- Hans Peter Luhn (IBM). Computer for Verifying Numbers, patent USA 2 950 048. Patent USA 2 950 048 na Google Patents — Luhnův patent, podaný 6. ledna 1954 a udělený 23. srpna 1960.
- 3GPP / ETSI. TS 123 003: Numbering, addressing and identification. ETSI TS 123 003 V17.8.0 — kontrolní číslice IMEI se vypočítává podle Luhnova vzorce.
- Centers for Medicare & Medicaid Services. Requirements for National Provider Identifier (NPI) and NPI Check Digit. Požadavky CMS na kontrolní číslici NPI — kontrolní číslice NPI používá Luhnův vzorec modulo 10, který se používá také pro čísla vydavatelů karet.