Ostatnia cyfra numeru karty nie jest przypadkowa — to cyfra kontrolna zaprojektowana specjalnie po to, by wychwytywać błędy, jakie popełnia się, przepisując ręcznie długi numer do formularza płatności.
Jak działa algorytm Luhna
Algorytm przechodzi przez cyfry numeru od prawej do lewej, podwaja co drugą cyfrę, a jeśli wynik przekracza 9, odejmuje od niego 9. Jeśli numer został wpisany poprawnie, suma wszystkich otrzymanych cyfr dzieli się przez 10 bez reszty.
Wynalazek IBM z lat 50., a nie Visa czy Mastercard
Algorytm nosi nazwisko Hansa Petera Luhna, naukowca z IBM, który opatentował go w 1954 roku jako ogólną metodę wykrywania błędów przy przepisywaniu dowolnego ciągu cyfr — pierwotnie bez żadnego związku z kartami płatniczymi. Sieci płatnicze przejęły go później, bo jest tani obliczeniowo i wykrywa dwa najczęstsze błędy przy ręcznym wpisywaniu: jedną błędnie wpisaną cyfrę lub dwie sąsiednie cyfry zamienione miejscami.
Dlaczego poprawna suma Luhna nie oznacza, że karta istnieje
Weryfikacja Luhna potwierdza wyłącznie matematyczną strukturę numeru, a nie istnienie realnego rachunku za nim. Można bez trudu wygenerować miliony numerów, które przechodzą tę weryfikację, choć żaden z nich nie jest powiązany z prawdziwą kartą — dlatego każda rzeczywista transakcja musi i tak przejść przez bank wydający kartę, żeby zostać właściwie zweryfikowana.
Do czego się to przydaje
- Wykrycie błędnie wpisanego numeru karty po stronie klienta, zanim formularz trafi na serwer.
- Szybkie wyeliminowanie oczywistej literówki przy ręcznym wpisywaniu długiego numeru.
- Zrozumienie, co dokładnie potwierdza weryfikacja Luhna, a czego nie.
Rozpoznawanie sieci płatniczej po numerze karty (BIN)
Pierwsze cyfry numeru karty tworzą BIN (Bank Identification Number), który wskazuje sieć płatniczą jeszcze przed pełną weryfikacją Luhna. Numery Visa zaczynają się od 4, Mastercard od zakresu 51–55 lub nowszego 2221–2720, a American Express od 34 lub 37. To właśnie dzięki temu prefiksowi formularz płatności potrafi pokazać właściwą ikonę sieci, zanim jeszcze cały numer zostanie wpisany.