Вспомните время, когда вы делали покупки в Интернете…

Помните время, когда вы делали покупки в Интернете, веб-сайт мог мгновенно определить, действителен ли номер вашей кредитной карты или нет. И в большинстве случаев веб-сайт может также указать, какую карту вы использовали: MasterCard, Visa, Amex и т. д.

Здесь я собираюсь показать фокус, и тогда вы можете легко получить свой собственный 13-19-значный действительный номер кредитной карты!

Фокус на удивление прост, нам нужно знать всего один простой алгоритм — алгоритм Луна. Алгоритм был изобретен ученым IBM Гансом Петером Луном. Подробнее о нем можно узнать здесь

Давайте начнем!

Рассматривается следующий номер кредитной карты

3782–8224–6310–005

  1. Начните с самой правой цифры, справа налево, удвойте значение каждой второй цифры

3(14)8(4)-8(4)2(8)-6(6)1(0)-0(0)5

2. Если результат больше 10, сложите цифры, чтобы получить однозначное число.

3(5)8(4)-8(4)2(8)-6(6)1(0)-0(0)5

3. Возьмите сумму всех цифр

3 + 5 + 8 + 4 + 8 + 4 + 2 + 8 + 6 + 6 + 1 + 0 + 0 + 0 + 5 = 60

4. Возьмите сумму по модулю 10. Если оно равно нулю, число допустимо.

Наш результат выше был 60, и, поскольку 60 mod 10 = 0, таким образом, номер кредитной карты действителен!

Вуаля! Вы только что получили действующий номер кредитной карты!

Теперь ваша очередь сообщить свой действительный номер кредитной карты. Попробуйте и перейдите в Проверка кредитной карты, чтобы проверить, правильно ли вы все сделали.

Затем достаньте свои кредитные карты из кошелька и потратьте несколько секунд, глядя на них. Вы заметили какие-либо другие сходства между ними? Ты прав! Все числа начинаются с 4, 5 или 6!

Судя по всему, они соблюдают какие-то определенные правила. ISO/IEC 7812 — это стандартная система нумерации для идентификации эмитентов карт. Ниже приведены некоторые примеры:

  1. Все номера виз начинаются с 4
  2. Номера MasterCard начинаются с 51, 52, 53, 54 или 55.
  3. Все номера American Express начинаются с 34 или 3.

Более подробную информацию вы можете узнать на Википедии.

Что ж, на самом деле довольно просто написать собственную программу для проверки номера кредитной карты. Гарвард предлагает онлайн-курс по edX — CS50, у вас будет возможность реализовать собственную проверку номера кредитной карты в наборе задач 1.