алгоритм луна номер карты
Алгоритм Луна
Алгоритм Луна (Luhn algorithm) — алгоритм вычисления контрольной цифры номера пластиковой карты в соответствии со стандартом ISO/IEC 7812. Не является криптографическим средством, а предназначен в первую очередь для выявления ошибок, вызванных непреднамеренным искажением данных (например, при ручном вводе номера карты). Позволяет лишь с некоторой степенью достоверности судить об отсутствии ошибок в блоке цифр, но не даёт возможности нахождения и исправления обнаруженной неточности.
Алгоритм определяет ошибки ввода одной неправильной цифры, а также практически все парные перестановки подряд идущих цифр (за исключением 09 ↔ 90).
Онлайн калькулятор выдает последнюю цифру контрольной суммы, полученной алгоритмом Луна из заданной последовательности. Также вычисляется проверочная цифра, которая может быть добавлена к исходной последовательности, чтобы получить корректную последовательность (т.е. последовательность, контрольная сумма которой оканчивается на 0).
Алгоритм проверки контрольной цифры
1. Цифры проверяемой последовательности нумеруются справа налево.
2. Цифры, оказавшиеся на нечётных местах, остаются без изменений.
3. Цифры, стоящие на чётных местах, умножаются на 2.
5. Затем все числа, полученные на предыдущем этапе, складываются.
6. Полученная сумма должна быть кратна 10 (то есть равна 40, 50, 60, 70, …). В примере выше исходная последовательность некорректна.
В примере: последняя цифра — контрольная. Для того, чтобы номер был верен в соответствии с алгоритмом Луна, контрольная цифра должна быть равна 7.
Алгоритм нахождения следующей проверочной цифры
Чтобы найти проверочную цифру, которая может быть добавлена к исходной последовательности, чтобы получить корректную последовательность (т.е. последовательность, контрольная сумма которой оканчивается на 0) необходимо добавить 0 к исходной последовательности и вычислить контрольную сумму полученной последовательности алгоритмом Луна. Если полученная контрольная сумма оканчивается на 0, то следующая проверочная цифра это и есть 0, в противном случае проверочная цифра определяется путем вычитания последней цифры полученной контрольной суммы из 10.
Алгоритм Луна
Алгоритм Лу́на (англ. Luhn algorithm ) — алгоритм вычисления контрольной цифры номера пластиковых карт в соответствии со стандартом ISO/IEC 7812. Не является криптографическим средством, предназначение алгоритма в первую очередь — выявление ошибок, вызванных непреднамеренным искажением данных (например, при ручном вводе номера карты, при приёме данных о номере социального страхования по телефону). Позволяет лишь с некоторой степенью достоверности судить об отсутствии ошибок в блоке цифр, но не даёт возможности локализации и коррекции обнаруженной неточности.
Алгоритм разработан сотрудником фирмы IBM Гансом Питером Луном, описан в США в 1954 году, патент получен в 1960 году.
Наиболее распространённые применения для подсчёта контрольной цифры:
В настоящее время содержание алгоритма является публичным достоянием.
Содержание
Достоинства и недостатки
В силу простоты реализации, алгоритм отнимает минимум вычислительных мощностей; в ряде случаев при наличии навыка расчёт может быть произведён «в уме». В то же время, алгоритм Луна позволяет только выявить ошибки в блоках данных, и то не все. Искажение одной цифры — обнаруживается. Обнаруживаются практически все парные перестановки подряд идущих цифр (за исключением 09 ↔ 90). Не могут быть обнаружены некоторые искажения двух подряд идущих цифр, а именно 22 ↔ 55, 33 ↔ 66 и 44 ↔ 77. Алгоритм не даёт информации о месте и характере возникшей ошибки.
Алгоритм может применяться для последовательностей цифр любой длины, однако при этом следует иметь в виду, что при достаточно длинных числах вероятно появление одновременно нескольких искажений данных; некоторые из таких ошибок могут привести к ошибочному выводу, что контрольное число, вычисленное по алгоритму Луна, подтверждает неизменность данных.
Алгоритм проверки контрольной цифры
Упрощённый алгоритм
1. Начиная с первой цифры слева через 1 (то есть 1, 3, 5, 7, 9, …) делается проверка: если 2·x > 9, то из произведения вычитается 9, если 2·x Оригинальный алгоритм, описанный разработчиком
1. Цифры проверяемой последовательности нумеруются справа налево.
2. Цифры, оказавшиеся на нечётных местах, остаются без изменений.
3. Цифры, стоящие на чётных местах, умножаются на 2.
4. Если в результате такого умножения возникает число больше 9, оно заменяется суммой цифр получившегося произведения — однозначным числом, т. е. цифрой.
5. Все полученные в результате преобразования цифры складываются. Если сумма кратна 10, то исходные данные верны.
Аналоги
Источники информации
Ссылки
Полезное
Смотреть что такое «Алгоритм Луна» в других словарях:
Алгоритм Верхоффа — (Verhoeff) алгоритм расчёта контрольной цифры для обнаружения ошибок при ручном вводе длинных цифровых последовательностей. Впервые опубликован в 1969 г. голландским математиком Якобом Верхоффом. Алгоритм позволяет выявить большее число… … Википедия
Контрольное число — Эта статья или раздел нуждается в переработке. Пожалуйста, улучшите статью в соответствии с правилами написания статей … Википедия
Список алгоритмов — Эта страница информационный список. Основная статья: Алгоритм Ниже приводится список алгоритмов, группированный по категориям. Более детальные сведения приводятся в списке структур данных и … Википедия
Программируемые алгоритмы — Служебный список статей, созданный для координации работ по развитию темы. Данное предупреждение не устанавл … Википедия
Контрольная сумма — Контрольная сумма некоторое значение, рассчитанное по набору данных путём применения определённого алгоритма и используемое для проверки целостности данных при их передаче или хранении. Также контрольные суммы могут использоваться для… … Википедия
CVV2 — на карте VISA CVV2 (англ. Card Verification Value 2) трёхзначный или четырёхзначный код проверки подлинности карты платёжной системы Visa. Другие платёжные системы имеют сходные технологии, к примеру аналогичный защитный код для карт… … Википедия
Дни недели — Названия дней недели с римского периода были, с одной стороны, связаны с названиями семи планет классической астрономии, а с другой стороны, первым днём недели считалось воскресенье. Обе эти системы были приняты во многих языках, за некоторыми… … Википедия
Контрольная цифра — Контрольное число, контрольная цифра разновидность контрольной суммы, добавляется (обычно в конец) длинных номеров с целью первичной проверки их правильности. Применяется с целью уменьшения вероятности ошибки при обработке таких номеров: машинном … Википедия
Список русскоязычных японистов — составлен на основе справочника С. Д. Милибанд «Востоковеды России» (в 2 т. М.: Вост. лит., 2008) В список, как правило, не включены переводчики японской литературы (кроме случаев, когда перевод сопровождается комментарием и имеет… … Википедия
Логлан — Самоназвание: La Logla Создан: Джеймс Кук Браун Регулирующая организация: Институт логлана (англ. The Loglan Institute)[1] … Википедия
Алгоритм Луна
Опубликовано 30.06.2021 · Обновлено 30.06.2021
Что такое Алгоритм Луна?
Сегодня алгоритм Луна является важным компонентом системы электронных платежей и используется всеми основными кредитными картами.
Ключевые моменты
Как работает алгоритм Луна
Алгоритм формулы LUHN был разработан немецким ученым-компьютерщиком по имени Ханс Петер Лун в 1954 году, когда он работал исследователем в IBM.12 Точная работа алгоритма основана на модульной арифметике, математической технике, разработанной Карлом Фридрихом Гауссом в начале 19 века. Хотя его детальная работа довольно сложна, он наиболее известен тем, что позволяет компьютерам быстро оценивать точность номеров кредитных карт, предоставленных клиентами.
Это делается путем применения серии вычислений к указанному номеру кредитной карты, суммирования результатов этих вычислений и проверки того, соответствует ли полученное число ожидаемому результату. Если это так, то номер кредита считается действительным. Если нет, алгоритм отклонит номер кредитной карты, указывая на то, что пользователь допустил ошибку при вводе номера.
С точки зрения клиента, мы постоянно используем алгоритм Луна, даже не осознавая этого. При размещении заказов в Интернете или при использовании POS-терминала продавца компьютерные системы могут быстро определить, когда мы допустили ошибку при вводе нашей информации. Это связано с тем, что алгоритм Луна был включен в программирование этих систем. Без него нам пришлось бы подождать, пока будет отправлен весь заказ на покупку, прежде чем мы узнаем, была ли сделка одобрена. Другими словами, алгоритм Луна помогает нам быстро выявлять ошибки пользователя и тем самым ускорять темпы транзакций “.
Пример алгоритма Луна из реального мира
Одна из центральных концепций алгоритма Луна – это использование так называемых «контрольных цифр». Эти цифры состоят из чисел, которые вставляются в более широкую числовую последовательность, чтобы помочь проверить или «проверить» подлинность всего числа.
Для кредитных карт контрольная цифра состоит из одной цифры, напечатанной в конце номера кредитной карты. Контрольная цифра вместо того, чтобы быть специально выбранной компанией-эмитентом кредитной карты, автоматически определяется алгоритмом Луна на основе предшествующих чисел в последовательности. Когда пользователи вводят номера своих кредитных карт для завершения транзакций, программное обеспечение для обработки платежей может использовать алгоритм Луна, чтобы определить, является ли указанный номер точным, частично на основе его контрольной цифры.
Сегодня алгоритм Луна интегрирован в популярные языки программирования и библиотеки кода, что позволяет относительно легко включить проверку идентификационного номера на основе Луна в новые программные приложения.
Алгоритм Луна
Алгоритм Луна (англ. Luhn algorithm) — алгоритм вычисления контрольной цифры номера пластиковой карты в соответствии со стандартом ISO/IEC 7812. Не является криптографическим средством, а предназначен в первую очередь для выявления ошибок, вызванных непреднамеренным искажением данных (например, при ручном вводе номера карты, при приёме данных о номере социального страхования по телефону). Позволяет лишь с некоторой степенью достоверности судить об отсутствии ошибок в блоке цифр, но не даёт возможности нахождения и исправления обнаруженной неточности.
Алгоритм разработан сотрудником фирмы IBM Хансом Питером Луном, описан в США в 1954 году, патент получен в 1960 году.
Наиболее распространённые применения для подсчёта контрольной цифры:
В настоящее время алгоритм является публичным достоянием.
Достоинства и недостатки
В силу простоты реализации алгоритм отнимает минимум вычислительных мощностей; в ряде случаев при наличии навыка расчёт может быть произведён в уме. В то же время алгоритм Луна позволяет только выявить ошибки в блоках данных, и то не все. Искажение одной цифры — обнаруживается. Обнаруживаются практически все парные перестановки подряд идущих цифр (за исключением 09 ↔ 90). Не могут быть обнаружены некоторые искажения двух подряд идущих цифр, а именно 22 ↔ 55, 33 ↔ 66 и 44 ↔ 77. Алгоритм не даёт информации о месте и характере возникшей ошибки.
Алгоритм может применяться для последовательностей цифр любой длины, однако при этом следует иметь в виду, что при достаточно длинных числах вероятно появление одновременно нескольких искажений данных. Некоторые из таких ошибок могут привести к ошибочному выводу, что контрольное число, вычисленное по алгоритму Луна, подтверждает неизменность данных.
Алгоритм проверки контрольной цифры
Оригинальный алгоритм, описанный разработчиком
1. Начиная с первой цифры последовательности слева и через одну цифру (то есть позиции 1, 3, 5, 7, 9, …) в случае, если количество цифр в последовательности нечетное (как в этом примере, где оно равно 15, 16 — контрольная), если же количество цифр четное, тогда, начиная со второй цифры последовательности через одну цифру (то есть позиции 2, 4, 6, 8, …), делается проверка: если 2·x > 9, то из произведения вычитается 9, иначе произведение 2·x оставляем без изменения, где x — текущая цифра.
4 5 6 1 2 6 1 2 1 2 3 4 5 4 6 4 8 12 4 2 2 6 10 12 8 3 4 2 2 6 1 3
2. Затем все числа, полученные на предыдущем этапе, складываются.
8+5+3+1 + 4+6+2+2 + 2+2+6+4 + 1+4+3+4 = 57
3. Полученная сумма должна быть кратна 10 (то есть равна 40, 50, 60, 70, …). В примере выше исходная последовательность некорректна.
В примере: последняя цифра — контрольная. Для того, чтобы номер был верен в соответствии с алгоритмом Луна, контрольная цифра должна быть равна 7.
4 5 6 1 2 6 1 2 1 2 3 4 5 4 6 7 8 12 4 2 2 6 10 12 8 3 4 2 2 6 1 3 8+5+3+1 + 4+6+2+2 + 2+2+6+4 + 1+4+3+7 = 60
Упрощённый алгоритм
1. Цифры проверяемой последовательности нумеруются справа налево.
2. Цифры, оказавшиеся на нечётных местах, остаются без изменений.
3. Цифры, стоящие на чётных местах, умножаются на 2.
4. Если в результате такого умножения возникает число больше 9, оно заменяется суммой цифр получившегося произведения — однозначным числом, то есть цифрой.
5. Все полученные в результате преобразования цифры складываются. Если сумма кратна 10, то исходные данные верны.
Примеры для вычисления контрольной цифры
Num[1..N] — номер карты, Num[N] — контрольная цифра.
СОДЕРЖАНИЕ
Описание
Контрольная цифра вычисляется следующим образом:
Пример вычисления контрольной цифры
Предположим, пример номера счета «7992739871» (только «полезная нагрузка», контрольная цифра еще не включена):
7 | 9 | 9 | 2 | 7 | 3 | 9 | 8 | 7 | 1 | |
Множители | 1 | 2 | 1 | 2 | 1 | 2 | 1 | 2 | 1 | 2 |
---|---|---|---|---|---|---|---|---|---|---|
знак равно | знак равно | знак равно | знак равно | знак равно | знак равно | знак равно | знак равно | знак равно | знак равно | |
7 | 18 | 9 | 4 | 7 | 6 | 9 | 16 | 7 | 2 | |
Сумма цифр | 7 | 9 (1 + 8) | 9 | 4 | 7 | 6 | 9 | 7 (1 + 6) | 7 | 2 |
Сумма полученных цифр 67.
Это делает полный номер счета 79927398713.
Пример проверки контрольной цифры
Сильные и слабые стороны
Поскольку алгоритм работает с цифрами справа налево, а нулевые цифры влияют на результат только в том случае, если они вызывают сдвиг позиции, заполнение нулями начала строки чисел не влияет на вычисления. Следовательно, системы, которые дополняют определенное количество цифр (например, путем преобразования 1234 в 0001234), могут выполнять проверку Luhn до или после заполнения и достигать того же результата.
Реализация псевдокода
использование
Помимо номеров кредитных карт, этот алгоритм также используется для расчета контрольной цифры на номерах SIM-карт.