věda

Co je algoritmus Luhn? Matematika za bezpečnými čísly kreditních karet

Matematický trik ukrytý v číslech vaší kreditní karty

Zjistěte, jak tento jednoduchý algoritmus z šedesátých let udržuje vaši peněženku v bezpečí

Isabel Pavia/Getty Images

Jste na obrazovce pokladny po online nakupování, jste připraveni zadat číslo vaší kreditní karty. Zadáte ji a okamžitě vidíte červenou chybovou zprávu: „Zadejte platné číslo kreditní karty.“ Otravně, prohledáte zpět každou číslici a spatříte viníka: poklepali jste na 6 klíčů, kam patřilo 5. Opraveno překlep; Nákup dokončit. Jak ale web detekoval vaši chybu tak rychle? Uchovává online platforma hlavní seznam všech platných čísel kreditních karet pro porovnání vašeho příspěvku? Píchalo to vaši banku za zlomek vteřiny? Vysvětlení je mnohem chytřejší.

Všechna čísla kreditních karet hlavního proudu se řídí a Matematický trik Navrženo tak, aby chytilo nejběžnější překlepy. Říká se tomu algoritmus Luhn, pojmenovaný IBM výzkumný pracovník Hans Peter Luhn, který Patentoval to v roce 1960. Podobné schémata kontroly chyb se skrývají v mnoha číslech, se kterými se denně setkáte: čárové kódy, čísla sledování balíčků, čísla bankovních účtů a dokonce i ISBN v knihách.

Popadněte kreditní kartu z vaší peněženky a zjistíte, že obsahuje více struktury, než navrhuje první pohled. Anatomie čísla kreditní karty zahrnuje čtyři hlavní části. Abych ukázal, použiji své osobní vízum. (Protahujte své matematické svaly těmito hádankami)


O podpoře vědecké žurnalistiky

Pokud se vám tento článek líbí, zvažte podporu naší oceněné žurnalistiky předplatné. Zakoupením předplatného pomáháte zajistit budoucnost působivých příběhů o objevech a myšlenkách, které dnes formují náš svět.


Grafika ukazuje kreditní kartu s 16místným číslem anotovaným, aby se označila, jaké informace zachycují každá číslice nebo skupina číslic.

První číslice je hlavní průmyslový identifikátor. Víza vždy začínají 4 a objevuje vždy začínající 6. Dalších pět až sedm číslic určí banku nebo instituci, která kartu vydala. To, co zůstává (bez závěrečné číslice), je vaše konkrétní číslo účtu v této bance. Poslední číslice, někdy nazývaná „kontrolní číslice“, nemá nic společného s finančními institucemi. Emitenti to připínají tak, aby celé číslo karty uspokojilo konkrétní matematický test – algoritmus Luhn. Takto funguje algoritmus:

  1. Napište všechny kromě poslední číslice čísla karty.

  2. Zdvojnásobit každé další číslo začínající napravo.

  3. Shrnout výsledné

    číslice (ne čísla). Například, pokud jste zdvojnásobili 7, abyste se stali 14 v kroku 2, v tomto kroku se to stane 1 + 4 = 5.

  4. Přidejte kontrolní číslici k součtu. Pokud není výsledkem násobek 10, je číslo kreditní karty neplatné.

Ukážu algoritmus Luhn v akci na mém vízum, ale měli byste to také vyzkoušet s vaší kreditní kartou.

Schéma používá číslo kreditní karty z předchozí grafiky, aby ukázalo, jak zjistit, zda je číslo karty platné pomocí čtyř kroků algoritmu Luhn.

Číslo vyvrcholí v roce 75, což není násobek 10. To nemůže být moje skutečné číslo kreditní karty; Musel jsem to omylem.

Vydavatelé kreditních karet nejprve přiřadí čísla účtu a poté vypočítejte kroky jeden až tři z algoritmu Luhn k určení vhodné kontrolní číslice. V tomto případě mělo číslo karty skončit 3, protože 67 + 3 = 70, násobek 10.

Tento konkrétní tanec číslic přišel ovládnout ověření kreditní karty kvůli jeho jednoduchosti a silné sadě funkcí. Pokud při zadávání čísla karty zkazí jakoukoli číslici, detekuje ji algoritmus Luhn. Pokud při zadávání náhodně zaměníte sousední číslice karty, zjistí to také (s jednou výjimkou převrácení 09 až 90 nebo naopak).

Holandský matematik Jacobus Verhoeff hlášeno v roce 1969 Že dvě chyby – Mistyping na jednu číslici a vyměňovat dvě sousední číslice čísla karty – zaúčtovají za téměř 90 procent všech chyb vstupu lidí v praxi. Verhoeff vyvinul ještě komplexnější algoritmus To kromě detekce všech stejných překlepů jako Luhnův algoritmus také chytí transpozice 09/90 a také exotičtější skluzavky. Verhoeffova algoritmus byl matematický triumf. Někteří současníci dokonce zveřejnili nepravdivé důkazy a tvrdili, že žádná číslice jediné kontroly nemohla nést dostatek informací, aby zachytila všechny tyto chyby. Verhoeffův algoritmus nikdy nezískal rozsáhlé adopce, možná kvůli jeho zvýšené složitosti oproti Luhnově nebo proto, že Luhnův algoritmus byl již nasazen a odvedl dostatečnou práci.

Luhnův algoritmus vám ušetří čas a peníze. V určitém okamžiku během nákupu dodavatel ověří, že vaše karta patří vám zasláním vašich informací do specializované služby ověření karty. Tato komunikace vyžaduje čas a vyvolává poplatky za zpracování pro podnikání. Byla by to ztráta sekund a centů, která by outsourcovala zbytečné zpět a zpět s profesionální validační službou, která by zachytila běžné překlepy. Protože Luhnův algoritmus vyžaduje tak málo výkonu zpracování, počítač, který manipuluje s transakcí, může také kontrolu spustit, aniž by bylo nutné kontaktovat jakoukoli třetí stranu.

Důležité je, že předávání algoritmu Luhna nezaručuje platné číslo kreditní karty. Spíše selhání Zaručuje neplatný Číslo kreditní karty. Algoritmus uvádí první obrannou linii, kterou mohou proklouznout méně obyčejných překlepů a důvtipných podvodníků. Tyto případy jsou chyceny službami náročnějšími na zdroje.

Jak ví Luhnův algoritmus, kdy se vaše prsty mumlá? Každá číslice v čísle kreditní karty přispívá k konečnému součtu v algoritmu jednociferné číslo. Pokud číslice sedí v pozici, která se nezdvojnásobí, pak se pouze přispívá k součtu. Ale i když číslice sedí ve zdvojnásobené poloze, shrnutí jednotlivých číslic výsledného dvoumístného čísla vždy přináší jednociferné číslo. Níže uvedená tabulka uvádí všechny tyto možné příspěvky:

Tabulka uvádí příspěvek každé číslice, ve zdvojnásobené a neomezené poloze, na konečnou částku v algoritmu.

Například 6 přispívá 6, když je v nepoškozené poloze a přispívá 3 ze zdvojnásobené polohy, protože 6 se zdvojnásobí rovná 12 a 1 + 2 = 3. Zkazí jediné číslo při zadávání vaší kreditní karty, které vás účinně posune nahoru nebo dolů ve stejném sloupci této tabulky a mění jeden termín v součtu algoritmu. Platné číslo kreditní karty má za následek částku, která je násobkem 10. Jakákoli jednociferná chyba změní součet jednociferným číslem, takže chybná částka rozhodně nebude násobek 10.

Formálně dokazující, že Luhnův algoritmus detekuje výměny sousedních číslic zahrnuje analýzu případů, ale příklad pomůže ilustrovat myšlenku. Představte si, že máme sekvenci 31 na naší kreditní kartě, s 3 ve zdvojnásobené poloze. Místo toho náhodou vstoupíme do 13. Ve správném součtu, toto duo přispívá 6 + 1 = 7 (3 zdvojnásobené plus 1 nepoškozené), zatímco ve vadné součtu přispívá 2 + 3 = 5 (1 zdvojnásoben plus 3 neomezené). Chyba tedy nakonec změní naši součet o 2: přechod z příspěvku 7 na příspěvek 5. Pokud původní částka přinesla násobku 10, pak neexistuje žádný způsob, jak tento nový bude. Můžeme zkontrolovat, že to funguje pro každou dvojici čísel s výjimkou 09/90, které oba přispívají stejným množstvím do součtu Luhn.

Až příště pokladna bliká, že nepříjemná chybová zpráva, pamatujte: Jednoduchý kus matematiky pod kapotou právě ušetřil trochu času a peněz pro všechny zúčastněné.

Zdrojový odkaz

Related Articles

Back to top button