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

Контрольное число

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

История

Идея использования избыточности для контроля целостности данных восходит к середине XX века. С развитием вычислительной техники и телекоммуникаций возникла необходимость в простых и эффективных методах обнаружения ошибок. Одним из первых массовых применений контрольных чисел стали банковские счета и номера ценных бумаг, где ручной ввод был особенно подвержен ошибкам. В 1960-х годах были разработаны алгоритмы, такие как модуль 10 (алгоритм Луна) и модуль 11, которые до сих пор лежат в основе многих стандартов. С распространением штрихового кодирования в 1970-х годах контрольные цифры стали обязательным элементом для систем автоматической идентификации товаров.

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

Контрольное число вычисляется по строго определённому правилу, которое называется алгоритмом проверки. Обычно алгоритм включает следующие шаги:

  1. Взятие исходной последовательности символов (например, цифр номера).
  2. Применение весовых коэффициентов к каждому символу (каждая позиция имеет свой вес, часто повторяющийся циклически).
  3. Вычисление суммы произведений символов на их веса.
  4. Взятие остатка от деления полученной суммы на некоторое число (модуль), чаще всего 10 или 11.
  5. Формирование контрольного знака на основе остатка. Если остаток равен нулю, контрольное число часто принимается за 0. В некоторых алгоритмах (например, модуль 11) остаток может быть преобразован в цифру или букву (например, X для значения 10).

При проверке правильности номера алгоритм повторяется для всей последовательности, включая контрольное число. Если остаток от деления итоговой суммы на модуль равен нулю, номер считается корректным. В противном случае фиксируется ошибка.

Виды и применение

Идентификационные номера

Штрихкоды и товарные коды

Документы и транспорт

Криптография и цифровые подписи

Контрольные числа являются упрощённой формой контрольных сумм. В более сложных системах (например, в хеш-функциях MD5, SHA-1, SHA-256) используются криптографические контрольные суммы, которые не только обнаруживают случайные ошибки, но и защищают от преднамеренного изменения данных. Однако классическое «контрольное число» в узком смысле не является криптографическим инструментом.

Алгоритмы вычисления

Алгоритм Луна (mod 10)

Самый распространённый алгоритм для номеров банковских карт и некоторых других идентификаторов.

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

Алгоритм mod 11

Используется в ИНН, ОКПО, VIN и других системах.

  1. Каждой цифре присваивается весовой коэффициент, который может изменяться в зависимости от позиции (часто от 2 до 9, затем повтор).
  2. Вычисляется сумма произведений цифр на веса.
  3. Берётся остаток от деления суммы на 11.
  4. Если остаток равен 10, контрольное число может быть равно 0 или букве X (в зависимости от стандарта).

Алгоритм mod 97

Используется в IBAN и некоторых международных банковских кодах.

  1. Строка цифр преобразуется в большое целое число.
  2. Вычисляется остаток от деления этого числа на 97.
  3. Контрольные цифры дополняют остаток до 98 (или 97, в зависимости от стандарта).

Ошибки, выявляемые контрольным числом

Контрольное число эффективно обнаруживает следующие типы ошибок, возникающих при ручном вводе или передаче данных:

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

Источники

  1. ГОСТ Р 7.0.100-2018 «Система стандартов по информации, библиотечному и издательскому делу. Библиографическая запись. Библиографическое описание. Общие требования и правила составления» (раздел о контрольных цифрах ISBN).
  2. ISO/IEC 7812-1:2017 «Identification cards — Identification of issuers — Part 1: Numbering system» (алгоритм Луна для номеров банковских карт).
  3. ГОСТ Р 51511-2001 «Карты идентификационные. Нумерация эмитентов и держателей карт».
  4. Положение Банка России № 383-П от 19.06.2012 «О правилах осуществления перевода денежных средств» (контрольные цифры IBAN).
  5. Стандарт EAN/UCC-13 (GS1 General Specifications).
  6. «Алгоритмы контрольных сумм» — учебные пособия по теории информации и кодированию (В. А. Залогин, А. В. Смирнов).

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

На главную BFOmetr →