Как высчитывается контрольная сумма снилс
Перейти к содержимому

Как высчитывается контрольная сумма снилс

  • автор:

Правила расчета контрольной суммы СНИЛС

СНИЛС имеет вид «XXX-XXX-XXX YY», где XXX-XXX-XXX — номер, а YY — контрольное число.

Проверка контрольного числа проводится только для номеров больше номера 001-001-998.

(вот это что-то новое – будет уточнено в ОПФР)

Контрольное число СНИЛС рассчитывается следующим образом:

* Каждая цифра СНИЛС умножается на номер своей позиции (позиции отсчитываются с конца);

* Полученные произведения суммируются;

* Если сумма меньше 100, то контрольное число равно самой сумме;

* Если сумма равна 100 или 101, то контрольное число равно 00;

* Если сумма больше 101, то сумма делится нацело на 101 и контрольное число определяется

остатком от деления аналогично предыдущим двум пунктам.

* В номере XXX-XXX-XXX не может присутствовать одна и та же цифра три раза подряд. Дефисы при этой проверке игнорируются, т.е. неверными будут все нижеследующие примеры СНИЛСов:

Пример реализации на языке С++:
AnsiString CheckFields(AnsiString Field)
< AnsiString S = "", S1;
int i, j, C1, C2, ILS_Num, LastDigit, LastDigitCount;
int ILS14_1[12] = <9, 8, 7, 0, 6, 5, 4, 0, 3, 2, 1, 0>;
bool Flag;

Как высчитывается контрольная сумма снилс

Здравствуйте! Кто нибудь видел код, который проверяет СНИЛС на правильность?
Вот алгоритм проверки:
Алгоритм формирования контрольного числа СНИЛС таков:

Проверка контрольного числа Страхового номера проводится только для номеров больше номера 001-001-998
Контрольное число СНИЛС рассчитывается следующим образом:
Каждая цифра СНИЛС умножается на номер своей позиции (позиции отсчитываются с конца)
Полученные произведения суммируются
Если сумма меньше 100, то контрольное число равно самой сумме
Если сумма равна 100 или 101, то контрольное число равно 00
Если сумма больше 101, то сумма делится по остатку на 101 и контрольное число определяется остатком от деления аналогично пунктам 2.3 и 2.4
Например: указан СНИЛС 112-233-445 95. Проверяем правильность контрольного числа:

цифры номера 1 1 2 2 3 3 4 4 5
номер позиции 9 8 7 6 5 4 3 2 1
Сумма = 1×9 + 1×8 + 2×7 + 2×6 + 3×5 + 3×4 + 4×3 + 4×2 + 5×1 = 95. Сумма равна YY (контрольное число). Контрольное число 95 — указано верно.

kome-soft

Данный функционал(с возможными незначительными изменениями) добавлен в библиотеку Net.KSUniLib с версии 1.0.3.38.

Namespace: KomeSoftUniCL.Tools
Class: KSNumberValidator

В базы данных операторами часто вводятся различные текстово-цифровые коды, номера и идентификаторы. Каждый номер или идентификатор, как правило, имеет в своем составе специальные контрольные разряды и алгоритмы проверки правильности ввода. С одним из таких алгоритмов мы сегодня и познакомимся. А проверять мы будем СНИЛС. Да-да, ту самую зеленую карточку, которая лежит у вас в паспорте. СНИЛС в России выступает аналогом карточки соцстрахования в Штатах.
Фактически СНИЛС представляет собой три группы по три цифры, и отдельную группу на два символа для контрольного числа. Контрольное число рассчитывается по следующему алгоритму:

0) Игнорируются все нецифровые символы.
1) Все цифры СНИЛС (т.е., 9 цифр основного номера без контрольного числа) умножаются на свою позицию в номере (Важно: позиции цифр рассчитываются как в числе, а не как в строке! Т.е., справа налево. Важно: счет позиций начинается с 1, а не с 0)
2) Произведения разрядов номера суммируются.
3) Если сумма меньше 100, она принимается за контрольную.
4) Если сумма — 100 или 101, то контрольной суммой становится ноль. В номере при этом записывается «00»
5) Если сумма больше 101, то она делится нацело на 101, а с остатком от деления повторяются шаги с 3 по 5.

Дабы не реализовывать каждый раз функционал различных проверок, я создал в библиотеке специальный статический класс, и по мере сил и времени буду добавлять туда новые виды проверок. А на проверке номера СНИЛС и расчете его контрольной суммы мы сейчас остановимся поподробнее.

Итак, нам необходимы три метода: метод SNILSValidate(), возвращающий только true и false в зависимости от того, валидный ли номер или нет, метод SNILSContolCalc() , рассчитывающий и возвращающий контрольную сумму в виде числа и приватный метод SNILSCheckControlSum() , выполняющий указанные чуть выше шаги сравнения.
Реализуем SNILSValidate():

Логика метода проста. Метод получает строку, содержащую (предположительно) СНИЛС. Далее, с помощью KSStringProcessor.OnlyDigits(), мы очищаем входную строку от всего, кроме цифр, и проверяем ее длину. Если длина строки — 9 символов, то она является номером СНИЛС без контрольной суммы, если 11 — то приведен номер СНИЛС с контрольной суммой, а при любой другой длине строки метод выбрасывает исключение.
Итак, как мы видим, при длине строки в 9 символов для валидации нам достаточно просто рассчитать контрольную сумму. Если она рассчиталась, то номер мы считаем валидным.
При длине строки в 11 символов действия немного сложнее — необходимо запомнить последние два символа, рассчитать контрольную сумму для оставшихся 9 символов, а затем сравнить два значения. Если они равны, то номер валиден.
Теперь необходимо реализовать функционал расчета контрольной суммы:

Данный метод мы можем применять как вместе с предыдущим, так и независимо от него. Поэтому мы должны в него встроить не же проверки на длину строки. Далее, с помощью цикла for с двумя индексами i и j мы обходим посимвольно полученный 9-ти значный номер, и рассчитаем общую сумму разрядов.
Остался последний метод — SNILSCheckControlSum():

Метод определяет, в какой диапазон входит totalSum, и если она входит в третий диапазон — делит ее нацело на 101 и вызывает сама себя.

Результат: методы проверяют введенный номер СНИЛС на валидность и рассчитывают его контрольную сумму. Чуть позже будут так же написаны методы для проверки штрих-кодов EAN-8 и EAN-13, а также для ИНН и ОГРН.

Что такое контрольная сумма СНИЛС?

СНИЛС (Страховой номер индивидуального лицевого счета) – уникальный идентификационный номер, присваиваемый каждому гражданину России при получении страховых взносов. Контрольная сумма СНИЛС является важным элементом этого номера и позволяет проверить его на достоверность.

Контрольная сумма СНИЛС – это числовая последовательность, состоящая из двух цифр, которая рассчитывается путем применения специального алгоритма к остальным цифрам СНИЛС. Она помогает выявить ошибки при вводе номера или его подделку.

Рассчитать контрольную сумму СНИЛС можно следующим образом. Первым шагом необходимо умножить первую цифру СНИЛС на 9, вторую – на 8, третью – на 7 и так далее до девятой цифры, которую нужно умножить на 2. Затем полученные произведения складываются. Если сумма больше 101, то она делится на 101, а остаток от деления и будет контрольной суммой СНИЛС.

Например, если СНИЛС имеет вид 123-456-789 00, то контрольная сумма рассчитывается следующим образом: 1*9 + 2*8 + 3*7 + 4*6 + 5*5 + 6*4 + 7*3 + 8*2 + 9*1 = 165. Далее 165 % 101 = 64. Таким образом, контрольная сумма СНИЛС равна 64.

На практике рассчет контрольной суммы СНИЛС может быть использован для проверки правильности введенного номера или его подлинности. Если контрольная сумма не соответствует указанной в номере, то это свидетельствует о наличии ошибки или подделке.

Контрольная сумма СНИЛС: основная информация и расчет

СНИЛС (сокращение от «страховое номер индивидуального лицевого счета») является уникальным идентификатором граждан Российской Федерации в системе социального обеспечения. В СНИЛС включается 11 цифр, которые использоваться для последующей обработки информации о гражданах.

Контрольная сумма СНИЛС — это дополнительная цифра, которая добавляется к основному номеру СНИЛС и предназначена для проверки правильности введенного номера. Она вычисляется по определенному алгоритму и позволяет исключить возможные ошибки, связанные с неправильным вводом или изменением основного номера СНИЛС.

Расчет контрольной суммы СНИЛС осуществляется следующим образом:

  1. Первая цифра основного номера СНИЛС умножается на 9;
  2. Вторая цифра основного номера СНИЛС умножается на 8;
  3. Третья цифра основного номера СНИЛС умножается на 7;
  4. И так далее, с учетом уменьшения множителя на каждом последующем шаге;
  5. Все полученные произведения суммируются;
  6. Сумма делится на 11 и остаток от деления является контрольной суммой.

Полученное значение контрольной суммы может быть от 0 до 9. В случае, если остаток от деления равен 10, контрольная сумма заменяется на цифру 0.

Например, для СНИЛС 123-456-789 12 контрольная сумма можно рассчитать следующим образом:

Цифра СНИЛС Множитель Произведение
1 9 9
2 8 16
3 7 21
4 6 24
5 5 25
6 4 24
7 3 21
8 2 16
9 1 9
1 0 0
2 0 0

Сумма всех произведений: 9 + 16 + 21 + 24 + 25 + 24 + 21 + 16 + 9 + 0 + 0 = 165.

Деление суммы на 11: 165 / 11 = 15, остаток 0.

Контрольная сумма для СНИЛС 123-456-789 12 равна 0.

Таким образом, контрольная сумма позволяет проверить правильность основного номера СНИЛС и обнаружить возможные ошибки. При получении СНИЛС гражданы могут обратить внимание на контрольную сумму и убедиться в правильности введенного номера.

Что такое контрольная сумма СНИЛС?

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

СНИЛС является уникальным идентификационным номером гражданина в России. Его формат состоит из 11 цифр: первые 9 цифр — это серия и номер СНИЛСа, а последние 2 цифры — контрольная сумма.

Контрольная сумма рассчитывается с использованием специального алгоритма. Она служит для проверки, что номер СНИЛС был записан без ошибок, и предотвращает возможность случайных или намеренных изменений в серии и номере.

Если контрольная сумма в СНИЛСе не совпадает с рассчитанной, это может быть признаком того, что номер введен неправильно или содержит ошибку. В таком случае необходимо проверить правильность его записи и внести правки, если это требуется.

Контрольная сумма СНИЛСа позволяет удостовериться в его корректности и является важным элементом при обработке и хранении информации о гражданах в различных базах данных.

Как правильно рассчитать контрольную сумму СНИЛС?

СНИЛС (Страховой номер индивидуального лицевого счёта) – это уникальный идентификационный номер, присваиваемый каждому гражданину Российской Федерации. Он состоит из 11 цифр, разделенных дефисами в определенном формате (XXX-XXX-XXX XX).

Контрольная сумма в СНИЛС представляет собой дополнительную цифру, которая используется для проверки корректности номера. Рассчитывается она на основе первых девяти цифр СНИЛС.

Для правильного расчета контрольной суммы СНИЛС следуйте следующим шагам:

  1. Из первых девяти цифр СНИЛС, полученных без дефисов, умножьте каждую цифру на соответствующий ей вес из таблицы ниже:
  1. Полученные произведения сложите вместе.
  2. Определите остаток от деления полученной суммы на 101.
  3. Если остаток от деления равен 100 или 101, контрольная сумма равна 00. В противном случае контрольная сумма равна полученному остатку.

Теперь вы знаете, как правильно рассчитывать контрольную сумму СНИЛС. Это позволяет проверить правильность введенного номера и исключить возможные ошибки при заполнении документов или использовании СНИЛС в различных процессах.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *