Контрольные суммы ИНН, СНИЛС и ОГРН: как отличить настоящий номер

Видите в тексте «7707083893» — это ИНН или просто десять случайных цифр? На глаз не отличить, а для качественного обезличивания это критично. Помогает контрольная сумма — встроенная в сам реквизит проверка.

Что такое контрольная сумма

У большинства российских реквизитов последние цифры не произвольные: они вычисляются из предыдущих по формуле. Пересчитали — результат совпал — значит, номер корректен по формату. Не совпал — перед вами случайный набор цифр.

По схожему принципу работают штрихкоды и номера банковских карт (алгоритм Луна). У российских реквизитов — свои формулы.

Как это устроено у реквизитов

  • ИНН — 10 цифр у организаций или 12 у физлиц. Контрольные цифры считаются как взвешенная сумма остальных по модулю 11.
  • СНИЛС — 9 значащих цифр плюс 2 контрольные, проверка по модулю 101.
  • ОГРН / ОГРНИП — 13 и 15 цифр; последняя цифра — остаток от деления на 11 (или 13) по модулю 10.

Не вдаваясь в арифметику: каждая такая проверка отсекает подавляющее большинство «похожих, но ненастоящих» чисел.

Зачем это для обезличивания

Две причины.

1. Меньше ложных срабатываний. Если маскировать «любые 10–12 цифр», под замену попадут номера телефонов, артикулы, идентификаторы заказов. Проверка контрольной суммы оставляет только то, что действительно похоже на реквизит. Поэтому «Обезличь» точнее простого поиска по маске.

2. Правдоподобные фейки. В режиме замены на «правдоподобные значения» важно выдать не случайные цифры, а валидный номер — иначе принимающая система отвергнет его на проверке формата. Мы генерируем фейки, проходящие контрольную сумму. Готовые тестовые номера можно взять в генераторе реквизитов.

Небольшой пример

Возьмём «1234567890». Для настоящего 10-значного ИНН последняя цифра должна совпасть с результатом расчёта по весам [2, 4, 10, 3, 5, 9, 4, 6, 8]. Если не совпала — это не ИНН, и обрабатывать его как ИНН не нужно. Такой фильтр и спасает от лишних замен.

Вывод

Контрольные суммы — незаметная, но важная деталь: они делают обезличивание точнее и позволяют выдавать корректные тестовые данные. Хотите увидеть это в деле — проверьте текст в инструменте или сгенерируйте валидные реквизиты в генераторе.

Обезличить документ →   Восстановить