Алгоритм Луна
Онлайн калькулятор «Алгоритм Луна» для проверки идентификационных номеров, таких как номера кредитных карт, номер IMEI и подобные.
Как пользоваться:
В единственное поле необходимо ввести номер (числовую последовательность), который необходимо проверить алгоритмом Луна.
Нажать кнопку «Проверить», получить сумму алгоритма и проверочную цифру. Подробнее в разделе «теория».
Ответ возможно получить с этапами решения, если выставить галочку «подробнее».
Ограничения:
Номер вводится единой последовательностью без пробелов, запятых и прочих спецсимволов (например: 0123456789).
Минимальная длина номера — 1, максимальная — 500.
Алгоритм Луна — простая формула для проверки контрольной суммы. В основном используется для проверки различных идентификационных номеров, таких как номера кредитных карт, номер IMEI и тому подобные. Это не только помогает исправлять ошибки ввода данных, но и служит слабым средством обеспечения безопасности.
Большинство кредитных карт и многие правительственные идентификационные номера используют алгоритм в качестве простого метода отличия действительных номеров от опечаток или неправильных номеров. Он был разработан для защиты от случайных ошибок, а не от злонамеренных атак.
Шаги алгоритма:
На входе числовая последовательность — номер.
Начиная с последней цифры номера удвоим каждую вторую цифру карты.
Если в процессе удвоения получились числа большее 9, сложим две цифры полученного результата вместе и поставим их на место исходной цифры.
Суммируем все полученные числа в номере
Если последняя цифра суммы 0, то остаток от деления суммы чисел на 10 равно 0, а следовательно, номер карты действителен, иначе — недействителен.
Как определить следующую проверочную цифру:
Под следующей проверочной цифрой будем понимать такую цифру от 0 до 9, которую можно добавить в конец к исходной последовательности для получения корректного номера.
Добавим в конец исходной последовательности 0.
Проверим новую последовательность алгоритмом Луна.
Получим сумму, аналогично проверим, если последняя цифра суммы — 0, то проверочная цифра — это 0, иначе, для получения проверочной цифры необходимо отнять от 10 последнюю цифру суммы.
Нагляднее в примерах.
Пример:
Рассмотрим пример номера счета «79927398713″.
Шаг 1. Начиная с последней цифры номера удвоим каждую вторую цифру карты.
Шаг 2. Если при удвоении числа получается двухзначное число, то есть больше 9 (например, 6 × 2 = 12), прибавим цифры числа (например, 12: 1 + 2 = 3, 15: 1 + 5 = 6), чтобы получить однозначное число.
Шаг 3. Снесем однозначные числа из первой строки в текущую последовательность.
Шаг 4. Теперь сложим все цифры полученной последовательности (последняя строка). Если сумма по модулю 10 равна 0 (если сумма заканчивается на нуль), то последовательность действительна в соответствии с формулой Луна; иначе — недействительна.
Поскольку сумма равна 70, что кратно 10, номер счета действителен.
Конец алгоритма.
Теперь определим следующую проверочную цифру. Что такое следующая проверочная цифра в алгоритме Луна? Смотреть раздел «Теория».
Добавим в конец номера 0, получим:
7 9 9 2 7 3 9 8 7 1 3 0
Проверим новую последовательность алгоритмом Луна, аналогично, как мы это делали выше.
Получим последовательность
5 9 9 2 5 3 9 8 5 1 6 0
Сумма цифр последовательности s = 62 не оканчивается на 0, последняя цифра суммы равна 2.
Чтобы получить проверочную цифру, необходимо отнять от 10 последнюю цифру суммы.
Проверочная цифра: 10 − 2 = 8
Таким образом: сумма s = 70, следующая проверочная цифра 8.