Алгоритм Луна (проверка корректности банковских карт)


Предыдущая | Следующая

Думаю, многие знают, что последняя цифра в номере карты нужна для проверки корректности всего номера. А саму проверку можно легко провести с помощью алгоритма Луна. Он достаточно простой. В каждой паре цифр номера карты первое число умножаем на 2. Если после умножения число становится больше 9, то нужно сложить составные цифры. А затем все сложить. Если итоговая сумма кратна 10, то перед нами номер банковской карты. С вероятностью ошибки в 10%.
 


Алгоритм Луна снижает вероятность ложного срабатывания в разы. Но существует дешевый способ снизить ошибку еще немного – контролировать первые цифры в номере. Именно в начале номера закодирована платежная система, поддерживающая карту. Если в начале стоит цифра 4, то это VISA. Что-то из диапазона 51-55 – это MasterCard. 34-37 – это American Express. Аналогично для некоторых других систем. Вероятность ошибки, конечно же, всегда остается, но уже на допустимом уровне.