Walidator algorytmu Luhna

Luhn sprawdza tylko cyfrę kontrolną, nie to, czy karta jest aktywna.

Algorytm Luhna (ISO/IEC 7812-1) to suma kontrolna, która chroni numery kart kredytowych, identyfikatory urządzeń IMEI, kanadyjskie numery SIN, amerykańskie numery NPI i kilka innych systemów numeracji przed jednocyfrowymi literówkami. Wklej ciąg cyfr, spacje i myślniki są ignorowane, a walidator pokaże, czy numer jest prawidłowy, i przeprowadzi Cię przez kroki podwajania oraz sumowania, abyś w razie potrzeby mógł sprawdzić go ręcznie.

Jak oblicza się kontrolę Luhna

  1. 1

    Usuń znaki niebędące cyframi

    Spacje, myślniki i kropki są usuwane. Liczą się wyłącznie cyfry od 0 do 9.

  2. 2

    Podwój co drugą cyfrę od prawej

    Zaczynając od przedostatniej, co druga cyfra jest podwajana.

  3. 3

    Zsumuj cyfry każdej podwojonej wartości

    Jeśli podwojenie daje 14, dodaj 1 + 4 = 5. To odpowiada odjęciu 9 od każdego podwojenia ≥ 10.

  4. 4

    Zsumuj wszystkie otrzymane wartości

    Dodaj podwojone i zredukowane cyfry oraz cyfry nietknięte.

  5. 5

    Sprawdź podzielność przez 10

    Jeśli suma kończy się na 0, numer jest prawidłowy. W przeciwnym razie jest nieprawidłowy.

Przykład praktyczny

Sprawdź 4539 1488 0343 6467:

Pozycja (prawa→lewa) Cyfra Podwojona? Wartość
1 7 nie 7
2 6 tak 12 → 3
3 4 nie 4
4 6 tak 12 → 3
5 3 nie 3
6 4 tak 8
7 3 nie 3
8 0 tak 0
9 8 nie 8
10 8 tak 16 → 7
11 4 nie 4
12 1 tak 2
13 9 nie 9
14 3 tak 6
15 5 nie 5
16 4 tak 8

Suma: 80. 80 mod 10 = 0 → prawidłowy.

Gdzie stosuje się algorytm Luhna

System Długość Chroniony przez Luhna?
Visa, Mastercard, Discover 13–19 cyfr tak
American Express 15 cyfr tak
IMEI (identyfikator urządzenia GSM) 15 cyfr tak
Kanadyjskie ubezpieczenie społeczne (SIN) 9 cyfr tak
Amerykański krajowy identyfikator świadczeniodawcy (NPI) 10 cyfr tak
Izraelski dowód tożsamości (Teudat Zehut) 9 cyfr tak
ISBN-13 13 cyfr nie (używa mod 10 z wagami 1 i 3)

Co algorytm Luhna wykrywa, a co pomija

  • Wykrywa: wszystkie błędy jednocyfrowe oraz większość (choć nie wszystkie) przestawień sąsiadujących cyfr.
  • Pomija: przestawienie 09 ↔ 90 i kilka podobnych par. To kontrola literówek, a nie kontrola bezpieczeństwa.
  • To nie jest zabezpieczenie. Numer prawidłowy według Luhna łatwo wygenerować. Walidacja numeru PAN w bramkach płatniczych opiera się na zakresach wydawców, kodzie CVV, systemie AVS i technologii 3-D Secure, a nie tylko na algorytmie Luhna.

Najczęściej zadawane pytania

Nie. Luhn sprawdza jedynie, czy numer jest poprawny matematycznie. Nie mówi nic o tym, czy karta została wydana, czy ma środki ani czy jest skradziona. Rzeczywista weryfikacja odbywa się u wydawcy podczas autoryzacji.

Tak, ostatnia cyfra to cyfra kontrolna i zawsze można ją tak dobrać, aby suma była podzielna przez 10. Właśnie tak działają generatory IMEI i testowe numery kart.

Wykrywa każde zastąpienie pojedynczej cyfry i większość przestawień sąsiadujących cyfr, ale kilka par (np. 09 ↔ 90) nie zmienia sumy kontrolnej. Bardziej odporne schematy (ISBN-13, Verhoeff, Damm) oferują większą wykrywalność błędów kosztem złożoności.

Walidator działa w całości w Twojej przeglądarce, więc nic nie jest przesyłane, ale wklejanie prawdziwych danych PAN gdziekolwiek, gdzie nie jest to konieczne, to zły nawyk. Podczas eksperymentów używaj numerów testowych (np. 4242 4242 4242 4242).

Luhn działa dla dowolnej długości, ale jest znormalizowany dla konkretnych schematów (zwykle 9–19 cyfr). Walidator nie ogranicza długości.

Powiązane narzędzia

Narzędzie jest dostępne w innych językach