Security of Computer Systems
Главная | Articles | Регистрация | Вход
 
Пятница, 2024-11-22, 1:05 AM
Приветствую Вас Гость | RSS
Menu
Categories
Крякинг [3]
Кодинг [7]
Главная » Статьи » Кодинг » Кодинг

Алгоритм Луна (Luhn Algorithm) - алгоритм вычисления контрольной цифры номера пластиковых карт в соответствии со стандартом ISO/IEC 7812.
Алгоритм Луна (англ. Luhn Algorithm) — алгоритм вычисления контрольной цифры номера пластиковых карт в соответствии со стандартом ISO/IEC 7812. Не является криптографическим средством, предназначение алгоритма в первую очередь — выявление ошибок, вызванных непреднамеренным искажением данных (например, при ручном вводе номера карты, при приёме данных о номере социального страхования по телефону). Позволяет лишь с некоторой степенью достоверности судить об отсутствии ошибок в блоке цифр, но не даёт возможности локализации и коррекции обнаруженной неточности.

Алгоритм разработан сотрудником фирмы IBM Гансом Питером Луном, описан в США в 1954 году, патент получен в 1960 году. В настоящее время содержание алгоритма является публичным достоянием.

Наиболее распространённые применения для подсчёта контрольной цифры:

- Номера всех банковских карт.
- Номера некоторых дисконтных карт.
- Коды социального страхования.
- IMEI-коды.
- MEID (модифицированный алгоритм).

Достоинства и недостатки:

В силу простоты реализации, алгоритм отнимает минимум вычислительных мощностей; в ряде случаев при наличии навыка расчёт может быть произведён «в уме». В то же время, алгоритм Луна позволяет только выявить ошибки в блоках данных, и то не все. Искажение одной цифры — обнаруживается. Обнаруживаются практически все парные перестановки подряд идущих цифр (за исключением 09 ↔ 90). Не могут быть обнаружены некоторые искажения двух подряд идущих цифр, а именно 22 ↔ 55, 33 ↔ 66 и 44 ↔ 77. Алгоритм не даёт информации о месте и характере возникшей ошибки.

Алгоритм может применяться для последовательностей цифр любой длины, однако при этом следует иметь в виду, что при достаточно длинных числах вероятно появление одновременно нескольких искажений данных; некоторые из таких ошибок могут привести к ошибочному выводу, что контрольное число, вычисленное по алгоритму Луна, подтверждает неизменность данных.

Алгоритм проверки контрольной цифры (оригинальный алгоритм, описанный разработчиком):
  1. Цифры проверяемой последовательности нумеруются справа налево.
  2. Цифры, оказавшиеся на нечётных местах, остаются без изменений.
  3. Цифры, стоящие на чётных местах, умножаются на 2.
  4. Если в результате такого умножения возникает число больше 9, оно заменяется суммой цифр получившегося произведения — однозначным числом, то есть цифрой.
  5. Все полученные в результате преобразования цифры складываются.
Если сумма кратна 10, то исходные данные верны.


Проверка пластиковой карты согласно алгоритму Луна:

40
0
0
 00
1
2
 3
4
5
6
 7
8
9
9
1615
14
13
12
11
10
09
08
07
06
05
04
03
02
01
29=
0
+
0+
0+2
+
4
+
6
+
8
+
9
4×2
+
0×2+
0×2+
1×2+
3×2+
5×2+
7×2+
9×2=31

Результат: В результате сложения двух полученных значений (п.5 алгоритма) "29" и "31" получается сумма равная значению "60" - кратная 10, следовательно исходные данные верны.
Категория: Кодинг | Добавил: Rqas (2013-04-28)
Просмотров: 24668 | Рейтинг: 3.7/3 |
Всего комментариев: 0
idth="100%" cellspacing="1" cellpadding="2" class="commTable">
Имя *:
Email:
Код *:
Login Form
@Belvit.com

Category Search
Polls
Оцените мой сайт
Всего ответов: 790
Counter
Онлайн всего: 1
Гостей: 1
Пользователей: 0

3.144.253.195


Belvit.com © 2024