Друкарня від WE.UA

Як перевірити номер банківської карти без банку, або алгоритм Луна.

Як визначають відсутність помилки номера карти в платіжних сервісах, невже вони, щоб перевірити чи правильно користувач увів номер карти відправляють його до банків - ні все простіше. Як це зробити без відправки запиту до банку? Дуже просто, потрібно застосувати алгоритм Луна.

Що собою являє цей алгоритм - беремо номер карти із 16 цифр, з них беремо 1-шу, 3-тю, 5-ту, 7-му, 9-ту, 11-ту, 13-ту, 15-ту - цифру і множимо її на 2 і ставимо на місце (якщо в процесі множення на 2 число перевищує, або рівне 10 то додаємо дві цифри цього числа, тобто у випадку із 12 - 1+2 і буде 3). Фінальний крок сумуємо усі цифри номера карти після обробки та результат має ділитися на 10 без залишку інакше номер карти є неправильним.

Все це можливо, тому що остання цифра номера карти є контрольною і завдяки їй вдається перевіряти правильність номера карти (щось типу хеша md5).

По кроках.
Крок 1.
Беремо кожну другу цифру номера і множимо на 2, якщо результат понад 10, то сумуємо цифри числа між собою. Ставимо результат на місце.

Крок 2
Сумуємо всі цифри карти між собою.

Крок 3
Результат скасування має ділитися на 10 без залишку інакше номер карти неправильний.
Приклад коду на python.

nb = list('<credit_cart_number_16_digits>')

for x in [0, 2, 4, 6, 8, 10, 12, 14]:
    r = int(nb[x]) * 2
    if r >= 10:
        r = int(list(str(r))[0]) + int(list(str(r))[1])
    nb[x] = str(r)

sn = 0

for i in nb:
    sn += int(i)

if sn % 10 == 0:
    print('Number bank cart correct!')
else:
    print('invalid cart number')

Висновок.

Такий алгоритм дуже корисний для перевірки правильності номерів, він багато де використовується: номери IMEI, американських NPIN

Статті про вітчизняний бізнес та цікавих людей:

Поділись своїми ідеями в новій публікації.
Ми чекаємо саме на твій довгочит!
БК
Богдан Карпов@bohdan_karpov

1Довгочити
190Перегляди
1Підписники
На Друкарні з 2 травня 2023

Це також може зацікавити:

  • Що таке патерни проєктування?

    Патерни проєктування подібні до стандартних конструкцій у будівництві. Наприклад, "патерн Фасад" відповідає фасаду будинку, який приховує деталі і надає простий інтерфейс. "Патерн Одинак" подібний до створення лише одного ключа для доступу до чогось цінного.

    Теми цього довгочиту:

    Програмування
  • λanguage: Неформальний опис мови

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

    Теми цього довгочиту:

    Js
  • Український IT. Автоматичний переклад відео YouTube з англійської на українську та інші цікаві проєкти

    У цьому пості ви дізнаєтеся про проєкт для перекладу відео над яким я зараз працюю, розповім про успіхи мого попереднього проєкту, поділюся українським аналогом Buy Me A Coffee та Patreon й багато чого іншого

    Теми цього довгочиту:

    It

Коментарі (2)

Дякую за цікавий довгочит! Завжди було цікаво як так воно перевіряє на правильність, ще й миттєво

Це також може зацікавити:

  • Що таке патерни проєктування?

    Патерни проєктування подібні до стандартних конструкцій у будівництві. Наприклад, "патерн Фасад" відповідає фасаду будинку, який приховує деталі і надає простий інтерфейс. "Патерн Одинак" подібний до створення лише одного ключа для доступу до чогось цінного.

    Теми цього довгочиту:

    Програмування
  • λanguage: Неформальний опис мови

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

    Теми цього довгочиту:

    Js
  • Український IT. Автоматичний переклад відео YouTube з англійської на українську та інші цікаві проєкти

    У цьому пості ви дізнаєтеся про проєкт для перекладу відео над яким я зараз працюю, розповім про успіхи мого попереднього проєкту, поділюся українським аналогом Buy Me A Coffee та Patreon й багато чого іншого

    Теми цього довгочиту:

    It