Математики, шпионы и хакеры. Кодирование и криптография | страница 47



2. Затем мы складываем все полученные таким образом результаты, а также цифры, расположенные на четных позициях (в том числе последнюю контрольную цифру).

3. Если окончательная сумма кратна 10 (то есть ее значение равно нулю по модулю 10), номер карты является действительным. Заметим, что именно последняя контрольная цифра делает общую сумму кратной 10.

* * *

DINER’S CLUB

Одной из первых кредитных карт, получивших широкое признание, была карта Diner's Club. Автором идеи был американец Фрэнк Макнамара. В 1950 г. ему удалось убедить различные рестораны принимать оплату безналично с помощью персональных гарантированных кредитных карт, которые Макнамара распространил среди своих лучших клиентов. Наиболее часто в первые десятилетия кредитными картами расплачивались за обеды американские коммивояжеры, будучи в дороге.

* * *

Например, пусть карта имеет следующий номер:

1234 5678 9012 3452

По алгоритму Луна имеем:

1∙2 = 2

3∙2 = 6

5∙2 = 10 => 1 + 0 = 1

7∙2=14 => 1 + 4 = 5 (или 14-9 = 5)

9∙2 = 18 => 1 + 8 = 9

1∙2 = 2

3∙2 = 6

5∙2 = 10 => 1 + 0 = 1

Далее найдем сумму результатов и цифр на четных позициях:

2 + 6 + 1 + 5 + 9 + 2 + 6 + 1 = 32

2 + 4 + 6 + 8 + 0 + 2 + 4 + 2 = 28

32 + 28 = 60

Результат равен 60, это число кратно 10. Поэтому номер карты является действительным.

Алгоритм Луна можно применить другим способом: номер карты ABCD EFGH IJKL MNOP является правильным, если удвоенная сумма цифр на нечетных позициях и сумма цифр на четных позициях плюс количество цифр на нечетных позициях, которые больше, чем 4, кратно 10. Это правило записывается так:

2 (A + C + E + G + 1 + К + М + О) + (B + D + F + H + J + L + N + P) + (количество цифр на нечетных позициях, которые больше, чем 4) = 0 (mod 10).

Применим это правило к предыдущему примеру:

1234 5678 9012 3452

2 (1 + 3 + 5 + 7 + 9 + 1 + 3 + 5) + (2 + 4 + 6 + 8 + 0 + 2 + 4 + 2) + (4) = 100 

0 (mod 10).

Снова мы убедились, что номер кредитной карты является действительным, и показали, что на первый взгляд случайные номера карт соответствуют строгому математическому стандарту.

* * *

ПРИМЕР РАСЧЕТА КОНТРОЛЬНОЙ ЦИФРЫ КРЕДИТНОЙ КАРТЫ В EXCEL

Номер кредитной карты состоит из 15 цифр плюс контрольная цифра. Цифры сгруппированы в четыре группы по четыре цифры. Контрольная цифра (КЦ) рассчитывается следующим образом.


* * *

Можно ли восстановить цифру, отсутствующую в номере карты? Да, если мы имеем дело с действительной кредитной картой. Найдем, например, цифру X в номере 4539 4512 03X8 7356.