html текст
All interests
  • All interests
  • Design
  • Food
  • Gadgets
  • Humor
  • News
  • Photo
  • Travel
  • Video
Click to see the next recommended page
Like it
Don't like
Add to Favorites

ИИН. Алгоритм расчета и проверки

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

Сегодня мы с вами попытаемся разобраться в этом вопросе с точки зрения Казахстанского законодательства, а также набросаем простой скрипт проверки ИИН на Javascript. ИИН - индивидуальный идентификационный номер. Это понятие очень схоже с другой аббревиатурой: БИН - бизнес идентификационный номер. Мы будем рассматривать оба понятия.

Мы не будем вдаваться в подробности о том, когда началось зарождение идеи ИИН/БИН, а сразу перейдем к первому важному в этом вопросе постановлению.

Постановление Правительства Республики Казахстан от 11 июня 2003 года №565 "Об утверждении Программы перехода на единый номер физического (юридического) лица (идентификационный номер (бизнес-идентификационный номер) в целях создания Национальных реестров Республики Казахстан"

Здесь нас интересуют подразделы 2, 3, 4 раздела 5.

2. Структура ИИН (БИН)
За основу структуры ИИН предлагается взять двенадцатизначный идентификационный код гражданина, используемый в настоящее время Министерством внутренних дел Республики Казахстан. По информации Министерства внутренних дел похожие структуры кода применяются в Дании, Финляндии, Японии, Германии, США, Франции, Кувейте, Малайзии, Мальте, Ботсване, Кипре, Египте, Латвии, Литве, Эстонии, Белоруссии и других странах. В Казахстане данный код используется с 1997 года.
Преимущество этого кода заключается в его хорошей запоминаемости и информативности для физических лиц, поскольку в структуре действующего идентификационного кода гражданина присутствуют в определенной комбинации известные гражданину сведения, такие как дата, месяц и год рождения, а также пол и век физического лица.
При разработке структуры БИН предлагается использовать двенадцатиразрядный код, контрольный разряд которого будет рассчитываться аналогично расчету контрольного разряда ИИН.
В структуре ИИН (БИН) предлагается использовать только цифровые значения. Структура представляет собой характеристику последовательности цифр слева направо. Для удобства описания несколько разрядов, имеющих сходную и (или) одинаковую характеристику, могут быть объединены в один фасет.

3. Алгоритм генерирования ИИН
Предлагается следующий алгоритм генерирования ИИН:
1) первый фасет - содержит 6 разрядов (с а1 по а6) и характеризует год (две последние цифры), месяц и дату рождения физического лица;
2) второй фасет - содержит 1 (а7) разряд и характеризует пол физического лица и век его рождения. Причем при определении значения разряда для мужчин используются нечетные цифры, а для женщин - четные цифры.
Конкретные значения данного разряда выглядят следующим образом:
1 - для мужчин, родившихся в 19 веке;
2 - для женщин, родившихся в 19 веке;
3 - для мужчин, родившихся в 20 веке;
4 - для женщин, родившихся в 20 веке;
5 - для мужчин, родившихся в 21 веке;
6 - для женщин, родившихся в 21 веке.
Следовательно, в данном разряде имеются резервные значения 7, 8, 9 и 0;
3) третий фасет - содержит 4 разряда (с а8 по а11) и характеризует порядковый номер регистрации в системе. По данным Агентства по статистике Республики Казахстан максимальное количество родившихся в один день (начиная с 1999 года) - 1229 человек, поэтому 4 знака для порядкового номера регистрации вполне достаточно. Порядковый номер регистрации проставляется сплошной нумерацией в рамках одной группы (года рождения);
4) четвертый фасет - содержит 1 разряд (а12) и является контрольным разрядом ИИН. Алгоритм расчета контрольного разряда ИИН приведен в параграфе 5 главы 5 Программы.

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

4. Алгоритм генерирования БИН
Предлагается следующий алгоритм генерирования БИН:
1) первый фасет - содержит 4 разряда (с а1 по а4) и характеризует год (две последние цифры) и месяц регистрации юридического лица или индивидуального предпринимателя, осуществляющего деятельность на основе совместного предпринимательства (далее - ЮЛ или ИП(С));
2) второй фасет - содержит 1 разряд (а5) и характеризует тип ЮЛ или ИП(С). Кроме того, алгоритм задания значения данного разряда также используется для исключения возможности совпадения БИН с ИИН.
Поскольку в структуре ИИН а5 (пятый разряд) означает первую цифру даты рождения, то, учитывая, что дата рождения может начинаться только с 0, 1, 2 или 3 (например, 01, 11, 21, 31), обязательным условием в генерировании в структуре БИН а5 (пятого разряда) будет исключение использования цифр 0, 1, 2 и 3.
Предлагается использовать следующие конкретные значения данного разряда:
4 - для юридических лиц-резидентов;
5 - для юридических лиц-нерезидентов;
6 - для индивидуальных предпринимателей, осуществляющих деятельность на основе совместного предпринимательства.
Следовательно, в данном разряде имеются резервные значения 7, 8 и 9;
3) третий фасет - содержит 1 разряд (а6) и характеризует специальный признак, являющийся дополнительной детализацией разряда а5:
0 - признак головного подразделения ЮЛ или ИП(С);
1 - признак филиала ЮЛ или ИП(С);
2 - признак представительства ЮЛ или ИП(С);
3 - признак иного обособленного структурного подразделения ЮЛ или ИП(С);
4 - признак крестьянского (фермерского) хозяйства, осуществляющего деятельность на основе совместного предпринимательства;
4) четвертый фасет - содержит 5 разрядов (с а7 по а11) и характеризует порядковый номер регистрации в системе ЮЛ или ИП(С), а также их структурных подразделений;
5) пятый фасет - содержит 1 разряд (а12) и является контрольным разрядом БИН. Алгоритм расчета контрольного разряда БИН приведен в параграфе 5 главы 5 Программы и аналогичен расчету контрольного разряда ИИН.

Мы не стали брать из этого постановления подраздел 5 раздела 5, где приводится алгоритм проверки контрольного разряда (a12), потому что он был изменен в другом постановлении.

Постановление Правительства Республики Казахстан от 30 апреля 2007 года № 352 "О внесении изменений и дополнений в некоторые решения Правительства Республики Казахстан" (pdf)

Здесь нас интересует часть пункта 11 - алгоритм расчета значения контрольного разряда:

подраздел 5 изложить в следующей редакции:
«5. Алгоритм расчета значения контрольного разряда
В целях осуществления контроля и снижения ошибок клавиатурного ввода в составе ИИН (БИН) предусматривается наличие контрольного 12-го разряда, при расчете которого будет использоваться следующий алгоритм в два цикла:
а12=(а1*b1+а2*b2+а3*b3+а4*b4+а5*b5+а6*b6+а7*b7+а8*b8+а9*b9+a10*b10+a11*b11) mod 11,
где: ai - значение i-гo разряда;
bi - вес i-гo разряда.
разряд ИИН: 1 2 3 4 5 6 7 8 9 10 11
вес разряда: 1 2 3 4 5 6 7 8 9 10 11.
1. Если полученное число равно 10, то расчет контрольного разряда производится с другой последовательностью весов:
разряд ИИН: 1 2 3 4 5 6 7  8   9   10 11
вес разряда: 3 4 5 6 7 8 9 10 11  1    2.
2. Если полученное число также равно 10, то данный ИИН не используется.
3. Если полученное число имеет значение от 0 до 9, то данное число берется в качестве контрольного разряда.».

В итоге у нас вполне достойное понимание того, что такое ИИН, и как можно проверить правильность его ввода.

Привожу пример алгоритма на javascript, который позволит проверить правильность ввода ИИН:

Валидация ИИН/БИН
  1. function iinCheck(iin, clientType, birthDate, sex, isResident) {
  2. //clientType: 1 - Физ. лицо (ИИН), 2 - Юр. лицо (БИН)
  3. //birthDate: дата рождения (в формате Javascript Date)
  4. //sex: true - м, false - ж
  5. //isResident: true - резидент, false: нерезидент (true: по умолчанию)
  6. isResident = isResident || true;
  7. if(!iin) return false;
  8. if(iin.length!=12) return false;
  9. if(!(/[0-9]{12}/.test(iin))) return false;
  10. switch(clientType){
  11. case 1:
  12. //Физ. лицо
  13. //Проверяем первый фасет на совпадение с датой рождения ГГММДД
  14. if(iin.substring(0, 6)!=(
  15. "" +
  16. (birthDate.getYear()) +
  17. ((birthDate.getMonth()+1)<10?"0":"")+
  18. (birthDate.getMonth()+1)+
  19. (birthDate.getDate()<10?"0":"")+
  20. birthDate.getDate())) return false;
  21. //Проверяем пол и век рождения
  22. var s = parseInt(iin.substring(6, 7));
  23. if(((s%2)==1)!=sex) return false;
  24. if(
  25. birthDate.getFullYear()<(1800+parseInt(s/2)*100)
  26. || birthDate.getFullYear()>(1900+parseInt(s/2)*100)) return false;
  27. break;
  28. case 2:
  29. //Юр. лицо
  30. //Проверяем корректность даты (насколько это возможно)
  31. var m = parseInt(iin.substring(2, 4));
  32. if(m>12) return false;
  33. //Проверяем признак резидентства
  34. var r = parseInt(iin.substring(4, 5));
  35. if(r<4 || r>6 || (r==4 && !isResident) || (r==5 && isResident)) return false;
  36. break;
  37. }
  38. //Проверяем контрольный разряд
  39. var b1 = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 ];
  40. var b2 = [ 3, 4, 5, 6, 7, 8, 9, 10, 11, 1, 2 ];
  41. var a = [];
  42. var controll = 0;
  43. for(var i=0; i<12; i++){
  44. a[i] = parseInt(iin.substring(i, i+1));
  45. if(i<11) controll += a[i]*b1[i];
  46. }
  47. controll = controll % 11;
  48. if(controll==10) {
  49. alert("s");
  50. controll = 0;
  51. for(var i=0; i<11; i++)
  52. controll += a[i]*b2[i];
  53. controll = controll % 11;
  54. }
  55.  
  56. if(controll!=a[11]) return false;
  57. return true;
  58. }
Читать дальше
Twitter
Одноклассники
Мой Мир

материал с yvision.kz

6

      Add

      You can create thematic collections and keep, for instance, all recipes in one place so you will never lose them.

      No images found
      Previous Next 0 / 0
      500
      • Advertisement
      • Animals
      • Architecture
      • Art
      • Auto
      • Aviation
      • Books
      • Cartoons
      • Celebrities
      • Children
      • Culture
      • Design
      • Economics
      • Education
      • Entertainment
      • Fashion
      • Fitness
      • Food
      • Gadgets
      • Games
      • Health
      • History
      • Hobby
      • Humor
      • Interior
      • Moto
      • Movies
      • Music
      • Nature
      • News
      • Photo
      • Pictures
      • Politics
      • Psychology
      • Science
      • Society
      • Sport
      • Technology
      • Travel
      • Video
      • Weapons
      • Web
      • Work
        Submit
        Valid formats are JPG, PNG, GIF.
        Not more than 5 Мb, please.
        30
        surfingbird.ru/site/
        RSS format guidelines
        500
        • Advertisement
        • Animals
        • Architecture
        • Art
        • Auto
        • Aviation
        • Books
        • Cartoons
        • Celebrities
        • Children
        • Culture
        • Design
        • Economics
        • Education
        • Entertainment
        • Fashion
        • Fitness
        • Food
        • Gadgets
        • Games
        • Health
        • History
        • Hobby
        • Humor
        • Interior
        • Moto
        • Movies
        • Music
        • Nature
        • News
        • Photo
        • Pictures
        • Politics
        • Psychology
        • Science
        • Society
        • Sport
        • Technology
        • Travel
        • Video
        • Weapons
        • Web
        • Work

          Submit

          Thank you! Wait for moderation.

          Тебе это не нравится?

          You can block the domain, tag, user or channel, and we'll stop recommend it to you. You can always unblock them in your settings.

          • vassilenko
          • домен yvision.kz

          Get a link

          Спасибо, твоя жалоба принята.

          Log on to Surfingbird

          Recover
          Sign up

          or

          Welcome to Surfingbird.com!

          You'll find thousands of interesting pages, photos, and videos inside.
          Join!

          • Personal
            recommendations

          • Stash
            interesting and useful stuff

          • Anywhere,
            anytime

          Do we already know you? Login or restore the password.

          Close

          Add to collection

             

            Facebook

            Ваш профиль на рассмотрении, обновите страницу через несколько секунд

            Facebook

            К сожалению, вы не попадаете под условия акции