Электронные денежные переводы уже давно плотно засели в нашу жизнь. Они позволяют легко расплачиваться с людьми без использования устаревших наличных денег, а сервис перевода денег по номеру карты стал настоящим спасением от классических банковских переводов по сложным непонятным реквизитам.
Когда нам необходимо оперативно совершить перевод по номеру карты, многие испытывают беспокойство о том, что номер был введен неверно, и несколько раз глазами перепроверяют все группы цифр на правильность, и до недавнего времени я не был исключением. Но после того как я узнал определенную хитрость, жизнь стала чуточку проще, и сейчас я с вами этим поделюсь.
Для начала давайте разберемся с форматом номера банковской карты. Для примера возьмем следующий номер карты, где цифры заменены буквами:
ABBB BBCC CCCC CCCD
В этом номере карты:
- A - идентификатор финансовой организации (Visa/Mastercard/...)
- BBBBB - идентификатор банка, выдавшего эту карту
- CCCCCCCCC - порядковый номер клиента банка (т.е. вас)
- D - контрольная сумма
И для того, чтобы денежный перевод успешно прошел, все данные должны иметь адекватные значения: финансовая организация и банк должны существовать, порядковый номер клиента должен присутствовать в базе. Но даже если мы, вводя номер карты получателя, допустили опечатку, да так неудачно, что попали на чью-то существующую карту (а вероятность этого события очень мала), на помощь приходит последняя цифра номера - контрольная сумма.
При оформлении новой банковской карты, банк заполняет первые 3 поля (A,B,C), а поле контрольной суммы (D) вычисляется по алгоритму Луна. В итоге, проверка правильности введенного номера карты работает следующим образом:
- Каждая цифра с нечетным порядковым номером удваивается
- Если удвоенное значение больше 9, из этого результата вычитается 9
- Суммируются результаты, полученные для цифр на нечетных позициях, с исходниыми цифрами, стоящими на четных позициях
- Итоговая сумма должна быть кратна 10
Таким образом, если у нас допущены опечатки, вероятность схождения контрольной суммы достаточно мала, хотя и ненулевая. Таким образом, по крайней мере при переводе небольших сумм, я не сильно парюсь про возможные ошибки. Но если вы переводите суммы покрупнее, спешка тут ни к чему, лучше перепроверять все глазами.
А что вы думаете по этому поводу? Пишите свои умозаключения в комментариях! Подписывайтесь на БОРОДАТЫЙ ПРОГРАММИСТ, чтобы всегда быть в курсе событий!