Контрольное число
Контрольное число, контрольная цифра — разновидность контрольной суммы, добавляется обычно в конец длинных номеров с целью первичной проверки их правильности. Применяется с целью уменьшения вероятности ошибки при обработке таких номеров: машинном считывании с упаковки товара, записи в документы, голосовой передаче от человека к человеку и т. п. Наличие и правильность контрольного числа не гарантирует достоверность рассматриваемого номера (в том числе не спасает от действий злоумышленников), но на практике достаточно хорошо оберегает от случайных ошибок. Контрольное число чаще всего это либо последняя цифра суммы всех чисел номера, либо результат другой математической операции над цифрами. В компьютерных программах понятие «контрольного числа» обобщено до CRC, бита чётности и Кодов Рида-Соломона; а в некоторых архиваторах объём контрольных данных таков, что позволяет не только обнаружить ошибку, но и исправить её (обнаружение и исправление ошибок). Контрольные числа, применяемые в документах, обычно позволяют восстановить одну потерянную цифру при условиях, что известно, на какой позиции в номере она должна находиться и что остальные цифры в номере правильные. Если неизвестно, на какой позиции есть ошибка, нужно перебрать все возможные варианты (например, для 13-значного номера их будет 13), а из них выбрать наиболее правдоподобные (исходя из анализа содержательной информации в номере). Простое исправление контрольной цифры может привести только к большей ошибке, не связанной с математикой. Достоинства и недостатки
К недостаткам алгоритма традиционно относили его высокую, по сравнению с другими алгоритмами, сложность. Достаточно сложно произвести все вычисления вручную, особенно для длинных последовательностей. Однако при машинной проверке сложность вычислений не играет решающей роли, что позволяет использовать алгоритм Верхуффа при проверке введённых значений в различных устройствах. Примеры использования контрольных чисел в документахВ примерах обычно вычисляется некоторая функция (контрольная сумма) от цифр номера. Если она равна 0, то номер признаётся правильным. В некоторых случаях удобнее вычислять контрольное число и сверять его с имеющимся. Формально контрольной суммой можно считать разность между имеющимся и вычисленным контрольными числами. Цифры номера нумеруются справа налево: …n3n2n1, так же, как и соответствующие им коэффициенты …k3k2k1. Обычно содержательная информация (код страны, товара, банка и т. п.) находится в левой части номера, а контрольное число (цифра) является завершающей (самой правой) и имеет номер 1 (n1), однако с математической точки зрения все цифры кода, как правило, равноправны, и любая из них может считаться контрольной для остальных. Значение содержательной части номера можно посмотреть в описании соответствующего кода. Номера на товарах: штрих-код разных типовКонтрольные суммы штрих-кодов вычисляются по сходному алгоритму. Кроме того, тот же алгоритм (таблица обрезается или продолжается влево по очевидному правилу), используется во многих других случаях, например, для номеров товаров в магазинах.
Контрольная сумма есть остаток от деления на 10 суммы из цифр номера, умноженных на соответствующие коэффициенты из таблицы. Если контрольная сумма есть 0, то номер признаётся правильным. Если нужно подсчитать требуемое контрольное число для произвольного номера, нужно вначале поставить «0» на крайнюю правую позицию, посчитать контрольную сумму, а затем, если она не равна нулю, заменить этот «0» на «10 — контрольная сумма». Конкретные примеры:
Для 4601546021290:
Номера банковских счетовДля расчёта контрольного разряда банковского счёта (девятая цифра в номере счёта) используется следующий алгоритм: к номеру расчётного счёта в начало добавляют 3 разряда, соответствующие трём последним цифрам БИКа банка. Получаем число из 23 разрядов, в котором на 12 месте находится контрольный разряд. Если мы собираемся проверить или рассчитать контрольную цифру корреспондентского счёта, то для первых трёх разрядов берём ноль ('0') и две цифры условного номера РКЦ, которым соответствует пятая и шестая цифра БИКа банка. Пример расчёта контрольной цифры расчётного счёта: БИК 044544512
В исходном состоянии известны все цифры, кроме контрольного разряда, он заменяется нулём. Для расчётов используется специальный массив весовых коэффициентов: 7, 1, 3, 7, 1, 3, 7, 1, 3, 7, 1, 3, 7, 1, 3, 7, 1, 3, 7, 1, 3, 7, 1. Номера банковских картНомера банковских карт Мир всегда начинаются на цифру 2, American Express, Diners Club и JCB начинаются на цифру 3, VISA начинается на 4, MasterCard на 5 и Maestro на 6. Алгоритм тот же, что и для «Международного идентификационного кода ценной бумаги». Международный идентификационный код ценной бумаги (ISIN)Контрольные суммы вычисляются по алгоритму Луна. Правило продолжения таблицы влево (для длинных номеров) и усечения её для коротких номеров очевидно. В случае наличия в Международном идентификационном коде ценной бумаги английских букв, каждая из них заменяется на 2 цифры, представляющие собой порядковый номер буквы в латинском алфавите, увеличенный на 9 (то есть A ~ 10, B ~ 11, …, Z ~ 35). Так, буквы RU заменяются на 2730.
Контрольная сумма: цифры кода умножаются на коэффициенты из таблицы, если результат умножения превосходит 9, то вычитаем из него 9, получившиеся числа складываем. В этой сумме берём последнюю цифру, остальные отбрасываем (то есть остаток от деления на 10). Если контрольная сумма есть 0, то номер признаётся правильным. Восстановление «контрольного числа» аналогично способу для штрих-кода. Конкретные примеры:
Буквы RU заменяем на 2730 и получаем 14-значный номер 27300007661625, который и будем проверять.
Буквы DE заменяем на 1314 и получаем 14-значный номер 13140001136927.
Страховой номер индивидуального лицевого счёта (Россия)Страховой номер индивидуального лицевого счёта страхового свидетельства обязательного пенсионного страхования (он же СНИЛС) проверяется на корректность контрольным числом. СНИЛС имеет вид: «XXX-XXX-XXX YY», где XXX-XXX-XXX — собственно номер, а YY — контрольное число. Алгоритм формирования контрольного числа СНИЛС таков:
Например: указан СНИЛС 112-233-445 95. Проверяем правильность контрольного числа:
Сумма = 1 ⋅ 9 + 1 ⋅ 8 + 2 ⋅ 7 + 2 ⋅ 6 + 3 ⋅ 5 + 3 ⋅ 4 + 4 ⋅ 3 + 4 ⋅ 2 + 5 ⋅ 1 = 95. Сумма равна YY (контрольное число). Контрольное число 95 — указано верно. Данный алгоритм не способен обнаружить все случаи ошибок в одной цифре (например, номера 087-654-303 00 и 087-654-302 00 различаются одной цифрой, но оба будут признаны верными). Также не во всех случаях может быть обнаружена ошибка перестановки двух соседних цифр (например, 087-654-303 00 и 086-754-303 00). Причина — пункт 2.4, где для близких чисел 100 и 101 установлено одинаковое контрольное число 00. Если бы вместо последних двух подпунктов проверки применялся алгоритм «Если сумма равна или больше 100, то контрольное число равно двум последним цифрам этой суммы (остатку от деления суммы на 100)», то он был бы способен обнаружить все случаи ошибок в одной цифре и все случаи ошибочной перестановки двух соседних цифр. Номера ИННБывают 10-значные — для юридических лиц, одна контрольная цифра в конце; и 12-значные — для физических лиц и ИП, две контрольные цифры: предпоследняя (n1) и последняя (n2) цифра в ИНН.
Проверку номера ИНН удобнее проводить, вычисляя контрольные числа:
Примеры:
148 = 11 ⋅ 13 + 5 (остаток); остаток совпадает с предпоследней цифрой ИНН, это одна контрольная цифра
141 = 11 ⋅ 12 + 9 (остаток); остаток совпадает с последней цифрой ИНН, это другая контрольная цифра. Оба контрольных числа совпадают, номер правильный.
Номер ОКПОМетодика расчёта контрольного числа для кода ОКПО (едина для всех кодов статистики). Контрольное число рассчитывается следующим образом:
Если получается остаток, равный 10, то для обеспечения одноразрядного контрольного числа необходимо провести повторный расчёт, применяя вторую последовательность весов, сдвинутую на два разряда влево (3, 4, 5,…). ВАЖНО: Если рассчитывается контрольный символ для десятизначного ОКПО, то последовательность весов будет заканчиваться на 1 (!!), то есть не (3, 4, 5, 6, 7, 8, 9, 10, 11), а (3, 4, 5, 6, 7, 8, 9, 10, 1). Если в случае повторного расчёта остаток от деления вновь сохраняется равным 10, то значение контрольного числа проставляется равным «0». Пример проверки контрольного числа для кода 47296611: Код 4 7 2 9 6 6 1 1 Вес разрядов 1 2 3 4 5 6 7 Сумма произведений, полученных путём умножения каждой цифры кода на вес разряда, равна: 4 ⋅ 1 + 7 ⋅ 2 + 2 ⋅ 3 + 9 ⋅ 4 + 6 ⋅ 5 + 6 ⋅ 6 + 1 ⋅ 7 = 133. 133 = 11 ⋅ 12 + 1; Остаток от деления полученной суммы на 11 равен 1. Контрольная цифра кода — 1 (последняя цифра). Контрольное число (остаток от деления) = 1 — совпадает с контрольной цифрой = 1, номер правильный. Важно отметить, что в случае с ОКПО номер для ЮЛ должен состоять из 8 цифр, а для ИП из 10. Поэтому перед проверкой номера не забывайте добавлять лидирующие нули. Например, ОКПО ИП — 148543122, а для проверки номера нужно передавать 0148543122. Номер ОКАТОНомер ОКАТО может быть кодом раздела «Объекты административно-территориального деления, кроме сельских населённых пунктов», который содержит от 2 до 8 цифр, или кодом раздела «Сельские населённые пункты» (11 цифр)[1]. Контрольное число (одна цифра) может быть добавлена к коду, образуя «блок идентификации», в котором на одну цифру больше (9 цифр для 8-цифрового кода). Расчёт контрольного числаВ коде ОКАТО расчёт контрольного числа подчиняется общему стандарту[2].
Если получается остаток, равный 10, то для обеспечения одноразрядного контрольного числа необходимо провести повторный расчёт, применяя вторую последовательность весов, сдвинутую на два разряда влево (то есть начинающуюся так: 3, 4, 5, …). Если в случае повторного расчёта остаток от деления вновь сохраняется равным 10, то значение контрольного числа принимается равным 0. Пример расчёта контрольного числаКод: 5 6 3 9 2 1 Вес разрядов: 1 2 3 4 5 6 Сумма произведений, полученная путём умножения каждой цифры кода на вес разряда, равна 5 · 1 + 6 · 2 + 3 · 3 + 9 · 4 + 2 · 5 + 1 · 6 = 78. Остаток от деления полученной суммы на 11 равен 1: 78 = 11 ⋅ 7 + 1. Контрольное число для данного кода равно 1. 10-значный ISBNISBN[3] имеет 10 цифр, ISSN — 8 цифр. Последняя — контрольная. В том случае, если вместо последней цифры стоит буква «X», при вычислении контрольной суммы она заменяется на число 10.
Контрольная сумма есть разность между числом 11 и остатком от деления на 11 суммы из цифр номера, умноженных на соответствующие коэффициенты из таблицы. Восстановление «контрольного числа» аналогично способу для штрих-кода, однако вместо «0» нужно подставлять цифру «11 — контрольная сумма». Если контрольная сумма равна 1, то подставляем «цифру» 10, то есть букву «X». При нанесении ISBN на книгу в виде штрих-кода собственная контрольная цифра удаляется, слева приписывается префикс 978 (или 979, этот префикс пока не используется). При нанесении ISSN на журнал в виде штрих-кода собственная контрольная цифра удаляется, слева приписывается префикс 977, а справа — 2 цифры, несущие некую дополнительную информацию, не содержащуюся непосредственно в ISSN (обычно 00 для платных изданий). Далее в обоих случаях справа приписывается контрольная цифра, вычисленная по 13-значному алгоритму для штрих-кода. Конкретные примеры:
Номера ОГРН и ОГРНИПСостоят из 13 (или 15) цифр, из них последняя — n1 — контрольная. Контрольная цифра равна остатку от деления на 11 (или на 13) числа, состоящего из первых 12 (или 14) цифр. Если остаток больше 9, то n1 = последней цифре остатка. Примеры: 1037739010891 — 13 цифр, ОГРН. 1035006110083 — 13 цифр, ОГРН. 1037739010891 — 13 цифр, ОГРН. 304500116000157 — 15 цифр, ОГРНИП. 304463210700212 — 15 цифр, ОГРНИП. Идентификационный номер транспортного средства (VIN)Стандарт ISO 3779-1983, оговаривающий структуру VIN транспортного средства, рекомендует в 9-й позиции VIN размещать контрольную сумму — число, вычисленное по определённому стандартом алгоритму, чьё значение зависит от значений всех остальных знаков в VIN. В случае использования в 9-й позиции контрольной суммы там допустимы следующие значения: числа 0…9 или X. Если в 9-й позиции находится любой другой знак, то такой VIN не пройдёт проверку. Если это VIN автомобиля, предназначенного для североамериканского рынка, то он или переписан с автомобиля с ошибками или перебит. Пример расчёта контрольной суммы:
1 ⋅ 8 + 8 ⋅ 7 + 4 ⋅ 6 + 3 ⋅ 5 + 4 ⋅ 4 + 5 ⋅ 3 + 6 ⋅ 2 + 5 ⋅ 10 + 7 ⋅ 9 + 3 ⋅ 8 + 4 ⋅ 7 + 0 ⋅ 6 + 4 ⋅ 5 + 4 ⋅ 4 + 5 ⋅ 3 + 3 ⋅ 2 = 368
368/11 = 33,5 33 ⋅ 11 = 363
CHK = 368—363 = 5 Если CHK = 10, то в 9-й позиции VIN записывается «X» (римская 10). Примечания
См. также
СсылкиInformation related to Контрольное число |