Усі статті

Алгоритм Луна: як номер картки перевіряють на коректність

Останню цифру номера банківської картки не вигадують випадково — вона обчислюється за формулою, спеціально розробленою для виявлення випадкових помилок при введенні номера вручну.

Як працює алгоритм Луна

Алгоритм Луна (Luhn) проходить цифри номера картки справа наліво, подвоює кожну другу цифру, а якщо результат перевищує 9 — віднімає від нього 9. Сума всіх отриманих цифр має ділитися на 10 без остачі, якщо номер коректний.

Навіщо потрібна контрольна цифра

Алгоритм Луна ловить найпоширеніші типи помилок при ручному введенні: одну переставлену цифру чи одну неправильно введену цифру. Це не криптографічний захист, а простий математичний фільтр, який відсіює явні одруки ще до відправки запиту на сервер платіжної системи.

Чому валідність за Луном не означає існування картки

Алгоритм Луна перевіряє лише математичну структуру номера, а не факт існування такої картки в реальному банку. Можна легко згенерувати мільйони номерів, що коректно проходять перевірку Луна, але жоден з них не буде прив'язаний до реального рахунку — саме тому для оплати завжди потрібна ще й перевірка через платіжну систему.

Навіщо це потрібно

  • Перевірити коректність номера картки на клієнті ще до відправки форми на сервер.
  • Швидко відсіяти явну одруку при ручному введенні довгого номера.
  • Зрозуміти межі того, що саме перевіряє алгоритм Луна, а що ні.

Визначення платіжної системи за номером картки (BIN)

Перші кілька цифр номера картки — це так званий BIN (Bank Identification Number) чи IIN, за яким можна визначити платіжну систему й банк-емітент ще до повної перевірки Луна. Наприклад, номери Visa завжди починаються з 4, Mastercard — з діапазону 51–55 або 2221–2720, а American Express — з 34 чи 37. Саме за цим префіксом форми оплати автоматично показують іконку відповідної платіжної системи під час введення номера.

Спробувати інструмент