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

ISO 7064

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

История и правовая основа

Стандарт ISO 7064 был разработан Международной организацией по стандартизации (ISO) в 1980-х годах. Первая редакция была опубликована в 1983 году. В СССР и Российской Федерации для этих целей часто использовался ГОСТ 28147-89 применительно к вычислительной технике, однако сам стандарт ISO 7064 был принят в качестве национального в ряде стран. В настоящее время актуальной является редакция ISO 7064:2003, корректировки которой были внесены в 2011 году.

Стандарт ISO 7064 базируется на общей теории контроля целостности информации, разработанной в рамках телекоммуникационных стандартов (ITU-T, серия V.41). Контрольный символ вычисляется на основании весовых коэффициентов, присвоенных разрядам исходной строки, и модуля, с помощью которого выполняется вычисление остатка от деления.

Классификация систем контрольных символов

ISO 7064 выделяет три основных типа алгоритмов, различающихся по диапазону допустимых символов и используемому модулю.

1. Чисто числовые системы (Numeric systems)

Эти алгоритмы оперируют только десятичными цифрами (0–9). Результатом вычисления является одна или две десятичные цифры. Модули вычислений: 10, 11 или 97. Наиболее распространённый представитель — алгоритм ISO 7064 Mod 97,10, используемый в расчётных документах и международных банковских счетах (IBAN). Вычисление осуществляется делением строки цифр на 97, контрольное число определяет разницу между остатком и 98 (либо 98 при нулевом остатке).

2. Смешанные системы (Mixed systems)

Эти алгоритмы работают со строками, содержащими как цифры (0–9), так и буквы латинского алфавита (A–Z). Символам присваиваются численные значения в порядке их алфавитного перечисления (A=10, B=11, …, Z=35). Модули: 10, 11, 36, 37 или 97. Пример — алгоритм ISO 7064 Mod 37,36, применяемый в паспортных номерах России и некоторых других стран (так называемый «паспортный» модуль). Здесь один контрольный символ (цифра или буква) вычисляется по модулю 36, а контрольная цифра — по модулю 37.

3. Двухциферные системы (Double-digit systems)

Отдельный подтип, где вычисление даёт две цифры (0–9) или две буквы (A–Z). Алгоритмы этого типа предназначены для строк, содержащих только цифры или только буквы, без смешивания. Наиболее известен алгоритм ISO 7064 Mod 97,10 (двухзначный контрольный остаток от деления на 97). Однако в двухциферных системах на практике чаще применяется ISO 7064 Mod 11,10 (с автокоррекцией) для строк фиксированной длины.

Алгоритмы и примеры расчёта

Стандарт детализирует процедуру вычисления контрольного знака. Общий принцип — взвешенное суммирование с последующим делением на модуль.

ISO 7064 Mod 11,10 (одна цифра)

Исходная строка (только цифры) длиной N. Шаг 1: исходная строка преобразуется к числу. Шаг 2: вычисляется остаток по модулю 11. Шаг 3: контрольная цифра = (11 – остаток) mod 10. Пример: строка «12345» остаток от 12345/11 = 9. Контрольная цифра = (11-9) mod 10 = 2. Полная строка: 123452.

ISO 7064 Mod 97,10 (две цифры)

Исходная строка (только цифры). Шаг 1: умножаем строку на 100 (добавляем два нуля). Шаг 2: делим на 97, находим остаток. Шаг 3: контрольное число = 98 – остаток (если остаток 0, то число 98). Пример: строка «405» → 40500 / 97 = 417 с остатком 51. Контрольное число = 98-51 = 47. Полная строка: 40547.

ISO 7064 Mod 37,36 (одна буква/цифра)

Исходная строка (цифры и буквы A–Z). Каждому символу присваивается вес: «0»=0, «1»=1, …, «9»=9, «A»=10, …, «Z»=35. Вычисляется накопленная сумма по модулю 37. Контрольная строка — разность до 37, переведённая обратно в символ. Пример: строка «1A» → вес 1 и 10 → сумма = 1+10*1 = 11. Модуль 37 → остаток 11. Контрольный символ = 37 — 11 = 26 → это буква «Q». Полная строка: 1AQ.

Применение в Российской Федерации

В России стандарт ISO 7064 используется в нескольких обязательных системах идентификации:

Важно отметить, что в паспортных данных России контрольный разряд вычисляется не по прямому алгоритму 37,36, а по его модификации — с дополнительным учётом неполного набора символов (кириллица и латиница).

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

Основные замечания к ISO 7064:

Связь с другими стандартами

ISO 7064 тесно связан с другими международными и региональными стандартами:

Итоговые замечания

ISO 7064 остаётся действующим международным стандартом для приложений, где не требуется криптографическая стойкость, но важна высокая вероятность обнаружения случайных ошибок (опечаток) при ручном вводе. Его внедрение в банковской сфере, документах паспортно-визовой службы и классификаторах делает его обязательным элементом инфраструктуры государственного учёта во многих странах, включая Российскую Федерацию.

Источники:

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

На главную BFOmetr →