Задумывались ли вы когда-нибудь, кто и как определяет номера банковской карты, из каких соображений присваивают номер и как минимизируют вероятность ошибочного перевода?
Сейчас я коротко отвечу на эти вопросы.
Значение цифр на картах.
Количество цифр на банковской карте может быть разным, но чаще всего их 16.
Первая цифра означает платежную систему
2 - это МИР, если вторая цифра тоже 2
4, 5, 6 – это VISA, MasterCard и UnionPay соответственно
1, 7, 8, 9, 2(не 22) – это не банковские карты.
Следующие 5 символов – это закодированная информация о карте. По этому номеру можно узнать название банка, регион, год выпуска карты и тип (кредитная, дебетовая и т.д.) и другая подобная информация. Однако информация не разделена на отдельные цифры, поэтому «на глаз» определить всю это информацию не получится.
Оставшиеся символы, кроме последнего – это как раз идентификатор клиента. Т.е. если 2 человека закажут в один день в одном банке одинаковые карты, то первые 6 цифр у них будут одинаковые, а вот следующие могут быть какими угодно – вовсе не обязательно они должны идти по порядку, скорее – они вообще не будут похожи.
И последняя цифра – проверочная. Она определяется, исходя их предыдущих по алгоритму Луна. Это делается для того, чтоб в случае ошибки деньги не ушли на другую карту.
Что будет, если ошибиться при вводе номера карты?
Если вы допустите единичную ошибку, то наберете невозможный номер, и банк не осуществит операцию. Возникает вопрос: «а вдруг карта с таким номером тоже существует?». Да, теоретически можно и так ошибиться. Но практически – это крайне маловероятно. Если вы ошибетесь в одной цифре или поменяете соседние цифры местами («1243» вместо «1234») то гарантированно введете несуществующий номер. А вот если вы ошибетесь в двух цифрах или поменяете местами цифры через одну, то такая карта потенциально может существовать с вероятностью 10% (практически гораздо меньше, поскольку она может быть еще не выпущена или уже заблокирована). Но такие ошибки крайне маловероятны. Обычно человек или ошибается в одной цифре или меняет местами две соседние, но не через одну.
Принцип работы алгоритма Луна.
Казалось бы, последнюю цифру можно вывести, как сумму предыдущих цифр. Но это плохой вариант. Он защитит от единичной ошибки, но не поможет, если клиент перепутает две цифры местами. Поэтому делается немного сложнее. Цифры на четных позициях остаются без изменений, а цифры на нечетных умножают на 2 и отнимают 9, если сумма 10 или более. После этого результат суммируется. Потом от 10 отнимают последнюю цифру от итоговой суммы, и получается последняя цифра банковской карты по алгоритму Луна.