Открыть сервис

Алгоритм расчёта контрольной цифры

Алгоритм расчёта контрольной цифры — это формализованная процедура, предназначенная для проверки целостности и достоверности последовательности цифр в идентификационных номерах, кодах и данных. Основная цель алгоритма — выявление ошибок, возникающих при ручном вводе, передаче или копировании информации, таких как пропуск, перестановка или замена одной цифры. Контрольная цифра (также известная как контрольная сумма, чек-цифра или checksum digit) рассчитывается на основе остальных цифр кода по определённому математическому правилу и добавляется к нему. При последующей проверке алгоритм применяется повторно, и если вычисленная цифра не совпадает с переданной, фиксируется ошибка. Алгоритмы расчёта контрольных цифр широко используются в банковской сфере, логистике, документах, удостоверяющих личность, и системах идентификации.

История

Первые алгоритмы проверки целостности данных появились в середине XX века с развитием автоматизированных систем обработки информации. Одним из ранних примеров является алгоритм Луна (Luhn algorithm), разработанный в 1954 году сотрудником IBM Гансом Петером Луном. Первоначально он применялся для проверки номеров кредитных карт. В 1960-х годах, с внедрением международных стандартов (например, ISBN для книг), алгоритмы контрольных цифр стали обязательным элементом идентификационных кодов. В СССР аналогичные методы использовались для проверки номеров паспортов, банковских счетов и кодов продукции (например, в системе ОКПО). С развитием цифровых технологий алгоритмы усложнились, появились модификации для работы с буквенно-цифровыми кодами (например, в VIN-номерах автомобилей).

Принцип работы

Алгоритм расчёта контрольной цифры основан на арифметических операциях с цифрами исходного кода. Общая схема включает следующие этапы:

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

При проверке алгоритм применяется ко всем цифрам, включая контрольную. Если сумма (или остаток) соответствует заданному условию (например, делится на 10 без остатка), код считается корректным.

Классификация алгоритмов

Алгоритмы расчёта контрольных цифр можно разделить по нескольким признакам.

По методу вычисления

По области применения

Примеры распространённых алгоритмов

Алгоритм Луна (Luhn algorithm)

Применяется для проверки номеров кредитных карт (Visa, Mastercard), а также для номеров IMEI в мобильных телефонах. Правила:

Пример: код 4532 0132 3456 7890. После расчёта сумма должна делиться на 10.

Алгоритм Верхоеффа (Verhoeff algorithm)

Разработан в 1969 году нидерландским математиком Якобусом Верхоеффом. Использует таблицу умножения в группе диэдра D5 и позволяет обнаруживать все одиночные ошибки и большинство ошибок перестановки соседних цифр. Применяется в некоторых системах идентификации (например, в немецких банковских счетах).

Алгоритм для ИНН (Россия)

Идентификационный номер налогоплательщика (ИНН) в России содержит контрольную цифру. Для 10-значного ИНН (физические лица) используется следующий алгоритм:

Для 12-значного ИНН (юридические лица) применяются два этапа: сначала проверяется 11-я цифра по весам (7, 2, 4, 10, 3, 5, 9, 4, 6, 8), затем 12-я — по весам (3, 7, 2, 4, 10, 3, 5, 9, 4, 6, 8).

Алгоритм для СНИЛС (Россия)

Страховой номер индивидуального лицевого счёта (СНИЛС) состоит из 11 цифр, последние две из которых являются контрольными. Алгоритм:

Алгоритм для ISBN-10 (международный стандарт)

Для 10-значного ISBN (использовался до 2007 года) контрольная цифра рассчитывается по модулю 11:

Применение

Алгоритмы расчёта контрольных цифр используются в следующих областях:

Критика и ограничения

Несмотря на широкое распространение, алгоритмы контрольных цифр имеют ограничения:

Для повышения надёжности в ответственных системах (например, в криптографии) применяются более сложные методы контроля целостности, такие как хеш-функции (SHA-256) или коды аутентификации сообщений (MAC).

Интересные факты

Источники

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →