
Miből áll egy bankkártyaszám?
Ha kézbe veszel egy kártyát, első pillantásra véletlenszerű számokat látsz, pedig minden számjegynek pontos szerepe van. Az első jegy a fő iparági azonosító, például a Visa 4-gyel, a Discover 6-tal kezdődik. A következő öt-hét szám azonosítja a kibocsátó bankot vagy intézményt. Ezután következik a számlaszámodat jelölő rész, végül az utolsó számjegy az ún. ellenőrző szám, amit kizárólag azért tesznek oda, hogy az egész kártyaszám megfeleljen a Luhn-algoritmusnak.
Hogyan dolgozik a Luhn-algoritmus?
Hans Peter Luhn már az 1960-as években kidolgozta ezt az egyszerű ellenőrző eljárást – ma is ezt használja a világ összes nagy kártyatársasága. A működése roppant egyszerű:
Írd le a kártyaszámot az utolsó számjegy (az ellenőrző szám) nélkül.
Indulj jobbról, és minden második számjegyet duplázz meg.
Az így kapott számjegyeket összegezd egyenként (például 7 x 2 = 14, ekkor 1 + 4 = 5).
Add hozzá a végén az ellenőrző számot is.
Ha a végeredmény osztható tízzel, a kártyaszám formailag helyes; ha nem, akkor valahol elgépelés történt.
Ez a trükk szinte minden elütést képes kiszűrni. Ha bármelyik számot elrontod, vagy véletlenül felcserélsz két egymás melletti számjegyet, a Luhn-ellenőrzés hibát jelez – egyetlen kivétellel: a 0–9, illetve 9–0 cseréjét nem ismeri fel.
Miért nem tökéletes – és miért mégis hasznos?
A holland Jacobus Verhoeff matematikus továbbfejlesztette a módszert: az ő algoritmusa már a 0–9/9–0 cserét, sőt még bonyolultabb elütéseket is felismer. Mindazonáltal a Luhn-módszer egyszerűsége és hatékonysága miatt terjedt el. A Verhoeff-algoritmus túl összetett volt, és mire megszületett, a világ már a Luhnt használta.
Éppen ezért a Luhn-algoritmust tekintik az első védelmi vonalnak a hétköznapi elgépelési hibák ellen. Lehetővé teszi, hogy az online fizetési rendszerek pillanatok alatt, helyi erőforrásokkal vizsgálják meg a kártyaszámokat, anélkül, hogy időigényes vagy költséges banki lekérdezéseket kellene végezniük minden egyes alkalommal. Így megspórolják a felesleges ügymenetet és költségeket. Fontos azonban tudni, hogy ha egy szám átmegy a Luhn-ellenőrzésen, attól még nem biztos, hogy érvényes kártyáról van szó – ez csak azt jelzi, hogy nincs szembetűnő elgépelés.
Miért ilyen hatékony a Luhn-algoritmus?
Minden számjegy egy egyjegyű számot ad hozzá a végösszeghez az algoritmus során, attól függően, hogy megduplázzuk-e a pozíciója szerint vagy sem. Ha elgépeled bármelyiket, a végösszeg úgy változik, hogy a tízzel való oszthatóság már biztosan megszűnik. Ez teljesen független attól, hogy melyik számjegyet rontottad el vagy cserélted fel. Formálisan igazolható, hogy az „egymás melletti számok felcserélésének” legtöbb esetét is felismeri – kivéve a már említett 0–9/9–0 helyzetet, amikor a végeredmény változatlan maradhat.
Egy kis matek minden gombnyomás mögött
Ez is emlékeztet arra, mennyire megkönnyíti az egyszerű matematika a mindennapjainkat. Minden egyes sikeres vagy sikertelen kártyaadat-bevitel mögött ott áll a Luhn-algoritmus láthatatlan védőbástyaként, hogy ne veszíts időt banális hibák miatt, a kereskedők pedig ne fizessenek felesleges tranzakciós díjakat. És ha legközelebb bosszankodsz egy piros hibaüzenet miatt, érdemes észben tartani: a gép csak segít abban, hogy gyorsabban és pontosabban célba érj.