1. Структура и представление идентификационного номера
1. Структура числа
Согласно положениям о числах идентичности гражданства в национальном стандарте GB11643-1999 Китайской Народной Республики, число личности гражданства является характерным комбинированным кодом, состоящим из семнадцатизначного численного онтологического кода и кода проверки один-один. Заказ о договоренности находится слева направо: шестизначный адресный код, восьмизначная дата кода рождения, код трехзначных последовательности и однозначный код проверки.
2. Адрес
Кодекс административного отделения округа (город, баннер, округ), где находится постоянное место жительства объекта кодирования, должен быть реализован в соответствии с положениями GB/T2260.
3. Дата кодекса рождения
Это указывает на год, месяц и день рождения закодированного объекта. Он выполняется в соответствии с положениями GB/T7408. Там нет сепаратора между годами, месяцем и дневными кодами.
4. Код последовательности
Это указывает на то, что в районе, идентифицированной одним и тем же адресом, номер последовательности, назначенный людям, родившимся в том же году, месяце и дня. Нечетное число кода последовательности назначается мужчинам, и даже числа назначаются женщинам.
5. Проверка кода
(1) Формула взвешенной суммы для онтологического кода семнадцатизначных цифр
S = sum (ai * wi), i = 0, ..., 16, первая сумма весов первых 17 цифр
AI: Указывает значение номера номера идентификационной карты на позиции I-TH
WI: представляет весовой коэффициент на I-TH Position
7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2
(2) Режим расчета
Y = mod (s, 11)
(3) Получить соответствующий код проверки через модуль
Y: 0 1 2 3 4 5 6 7 8 9 10
Код проверки: 1 0 x 9 8 7 6 5 4 3 2
То есть, если оставшаяся часть получена как 1, последний контрольный бит p должен быть соответствующим 0.
15-значный номер:
AABBCCYYMMDDXXS
18-значный номер:
AABBCCYYYYMMDDXXSP
2. Адрес
Первые 6 цифр идентификационного карты-это коды административных делений (называемые цифровыми кодами) (см. «ГБ/т 2260-2007 гг. регионы), города (регионы, автономные префектуры, лиги) и округа (автономные округа, города округа, баннеры, автономные баннеры, муниципальные округа, лесные районы, специальные районы) в моей стране в соответствии с иерархией.
(1) 1 -й и 2 -й цифры: Кодекс провинции, где вы находитесь, представляющий провинцию, автономный регион, муниципалитет непосредственно под центральным правительством и специальный административный регион.
Провинциальный и муниципальный код таблица: {11: «Пекин», 12: «Тяньцзинь», 13: «Хэбэй», 14: «Шаньси», 15: «Внутренняя Монголия», 21: «Лиаонинг», 22: «Джилин», 23: «Хейлонгджян», 31: «Шанхай», 32: «JIANGS»: «34»: «34»: «34». 35: «Fujian», 36: «Jiangxi», 37: «Shandong», 41: «Henan», 42: «Hubei», 43: «Хунан», 44: «Гуандунг», 45: «Гуанси», 46: «Хейнан», 50: «Чонкжинг», 51: », 51:», 51: 52: «51:»: 51: 51: «51:»: 51: 51: 51: 51: «51: 51:»: 51: 51: 51: 51: «51: 51: 51: 51:»: 51: 51: 51: 51: 51: 51: 51: 51: 51: 51: 51: 51: 51: 51: 51: «Хейнан»: «Чонджинг», 51: »: «Юньнан», 54: «Тибет», 61: «Шэньси», 62: «Гансу», 63: «Цинхай», 64: «Нинсия», 65: «Синьцзян», 71: «Тайвань», 81: «Хонгконг», 82: «Макао», 91: «иностранная».
(2) 3-й и 4-й цифры: Кодекс города провинциального уровня (округа), который представляет собой суммарный кодекс округов и округов под юрисдикцией города, региона, автономной префектуры, альянса и муниципалитета непосредственно под центральным правительством и суммарного кодекса административных дивизион на уровне графства непосредственно под провинциальным регионом).
―01 ~ 20, 51 ~ 70 означает город, а муниципалитеты непосредственно под центральным правительством говорят, что 01 означает город, а после 02 означает округ пригорода в рамках юрисдикции муниципального правительства;
―21 ~ 50 означает регионы, автономные префектуры и альянсы;
―90 представляет собой краткий кодекс административных подразделений на уровне округа непосредственно в провинции (автономный регион).
(3) 5-й и 6-й цифры: Кодекс округа (город) на уровне префектуры, указывающий на округ, автономный округ, город округа, знамя, автономное знамя, муниципальный район, лесной район и Специальный округ.
―01 ~ 20 означает города на уровне округа под юрисдикцией города, регион (автономные префектуры, лиги) под юрисдикцией городов уровня округа, муниципальных специальных округов и административных подразделений на уровне округа непосредственно под провинцией (автономный регион). 01 Обычно означает Кодекс сводки юрисдикции;
―21 ~ 80 означает округ, автономный округ, баннер, автономный баннер, лесной зону и региональную специальную зону;
―81 ~ 99 означает, что провинция (автономный регион) имеет город на уровне округа под его юрисдикцией.
3. Другие
15-значный идентификационный номер:
7 -й и 8 -й цифры - это год рождения (двузначные цифры, представленные последними двумя цифрами года).
№ 9 и 10 - месяц рождения.
11 -й и 12 -й представляют дату рождения.
13 -й и 14 -й биты являются последовательными кодами, это случайное число.
15 -я цифра представляет пол, нечетное число - мужское, а четное число - женское.
18-значный идентификационный номер:
7 -й, 8 -й, 9 -й и 10 -й - год рождения (четыре цифры).
№ 11 и 12 - месяцы рождения.
13 -й и 14 -й представляют дату рождения.
15 -й и 16 -й биты являются кодами последовательности.
17 -я позиция представляет пол, нечетные цифры - мужские, а даже числа жены.
Последний бит - это чек.
4. Пример кода JS
var idcardnoutil = { /*провинция, муниципальная таблица кода* / provinceandcitys: {11: "Пекин", 12: "tianjin", 13: "hebei", 14: "Shanxi", 15: "Inner Монголия ", 21:" liaoning ", 22:" Jilin ", 23:" Heilongjiang ", 31:" Shanghai ", 32:" Цзянсу ", 33:" Чжэцзян ", 34 : «Anhui», 35: «Fujian», 36: «Jiangxi», 37: «Шандун», 41: «Хенань», 42: «Хубей», 43: «Хунань», 44: «Гуандун», », 45 et ", 61:" Shaanxi ", 62:" Gansu ", 63:" Qinghai ", 64:" Ningxia ", 65:" Xinxia ", 71:" Taiwan ", 81:" Hong Kong ", 82:" Macao ", 91:" Foreign "}, /*Каждый взвешивающий фактор* /Powers: [" 7 "," 9 "," 10 "," 5 "," 8 "," 4 "," 2 "," 1 "," 6 "," 3 "," 7 "," 9 "," 10 "," 5 "," 8 "," 4 ","], /*нет. 18 -й вычисляющий код*/ paritybit: ["1", "0", "x", "9", "8", "7", "6", "5", "4", "3", "2"],/*гендерс*/ genders: {мужчина: "Мужчина", женский: «женский»},/*проверка Code*/ checkaddresscode: fundcode (addresscode) {varcode) {varcode) {varcode) {varcode) {varcode) {varcode) {varcode) {ware},/*checkdresscode: ward {varcode). /^^1-9^/d{5/.test(AdDressCode); if (! Проверьте) вернуть false; if (idcardnoutil.provinceAndcitys [parseint (addresscode.substring (0,2))]) {return true; } else {return false; }},/*Проверьте код даты*/checkbirthdaycode: function (birdaycode) {var check = /^^1-9§/d{3 )(,, 25-9,9Y))(1* 2)))(0^-9NO)|(* 2-2§-9|(3лье-1-11N) $/testestest); if (! Проверьте) вернуть false; var yyyy = parseint (birdaycode.substring (0,4), 10); var mm = parseint (birdaycode.substring (4,6), 10); var dd = parseint (birdaycode.substring (6), 10); var xdata = новая дата (yyyy, mm-1, dd); if (xdata> new date ()) {return false; // день рождения не может быть больше текущей даты} else if ((xdata.getfyear () == yyyy) && (xdata.getmonth () == mm - 1) && (xdata.getdate () == dd)) {return true; } else {return false; }}, /*Рассчитайте калибровочный код* / getParitybit: function (idcardno) {var id17 = idcardno.substring (0,17); /*Взвешен*/ var power = 0; for (var i = 0; i <17; i ++) {power+= parseint (id17.charat (i), 10) * parseint (idcardnoutil.powers [i]); } /*Модель* / var mod = power % 11; return idcardnoutil.paritybit [mod]; }, /*Проверить проверку кода* / CAPEPRITYBIT: function (idcardno) {var paritybit = idcardno.charat (17) .touppercase (); if (idcardnoutil.getparitybit (idcardno) == paritybit) {return true; } else {return false; }},/*Проверьте 15-битный или 18-битный идентификационный номер*/ceckidCardno: function (idcardno) {// Основная проверка 15-битного и 18-битного идентификационного номера var check = /^/d <dliefultsmenta )(/d{17 )(/d|x|x)) $/.test(idcardno); if (! Проверьте) вернуть false; // судить о длине, которая будет 15-битной или 18-битной if (idcardno.length == 15) {return idcardnoutil.check15idcardno (idcardno); } else if (idcardno.length == 18) {return idcardnoutil.check18idcardno (idcardno); } else {return false; }}, // Проверьте 15-значный идентификационный номер проверки15idcardno: function (idcardno) {// Базовая проверка 15-значного идентификационного номера var chese = /^^1-9^/d <driefultytainduce if (! Проверьте) вернуть false; // Проверьте код адреса var addresscode = idcardno.substring (0,6); check = idcardnoutil.checkaddresscode (AdderCode); if (! Проверьте) вернуть false; var birddaycode = '19' + idcardno.substring (6,12); // Проверка кода даты return idcardnoutil.checkbirthdaycode (birdaycode); }, // Проверьте 18-значный идентификационный номер проверка18idcardno: function (idcardno) {// Основная проверка формата 18-значного идентификационного номера var chese = /^^1-9^/d <drieftives1-9§/d{3 )(,0^-9^))(1^-2^))( •,,0сон1-9^) мозучке if (! Проверьте) вернуть false; // Проверьте адрес аддреса var addercode = idcardno.substring (0,6); check = idcardnoutil.checkaddresscode (AdderCode); if (! Проверьте) вернуть false; // Проверьте код даты var birddaycode = idcardno.substring (6,14); check = idcardnoutil.checkbirthdaycode (birdaycode); if (! Проверьте) вернуть false; //Checkcardnoutil.checkparitybit(idcardno); }, formatdatecn: function (day) {var yyyy = day.substring (0,4); var mm = day.substring (4,6); var dd = day.substring (6); вернуть yyyy + '-' + mm + '-' + dd; }, // Получить информацию getIdcardinfo: function (idcardno) {var idcardinfo = {gender: "", // Гендерный день рождения: "" // Дата рождения (yyyy-mm-dd)}; if (idcardno.length == 15) {var aday = '19' + idcardno.substring (6,12); idcardinfo.birthday = idcardnoutil.formatedatecn (aday); if (parseint (idcardno.charat (14))%2 == 0) {idcardinfo.gender = idcardnoutil.genders.female; } else {idcardinfo.gender = idcardnoutil.genders.male; }} else if (idcardno.length == 18) {var aday = idcardno.substring (6,14); idcardinfo.birthday = idcardnoutil.formatedatecn (aday); if (parseint (idcardno.charat (16))%2 == 0) {idcardinfo.gender = idcardnoutil.genders.female; } else {idcardinfo.gender = idcardnoutil.genders.male; }} return idcardinfo; }, /*18-битный до 15-бит* / getId15: function (idcardno) {if (idcardno.length == 15) {return idcardno; } else if (idcardno.length == 18) {return idcardno.substring (0,6) + idcardno.substring (8,17); } else {return null; }}, /*15-битный до 18-бит* / getId18: function (idcardno) {if (idcardno.length == 15) {var id17 = idcardno.substring (0,6) + '19' + idcardno.substring (6); var paritybit = idcardnoutil.getparitybit (id17); вернуть ID17 + Partybit; } else if (idcardno.length == 18) {return idcardno; } else {return null; }}}; // Проверка номера идентификационной карты jQuery.validator.addmethod ("idcardno", function (value, element) {return this.optional (element) || idcardnoutil.checkidcardno (value);}, "Пожалуйста, укажите действительный идентификационный номер."); // Получить информацию идентификационную карту var idcardinfo = idcardnoutil.getidcardinfo (idcardno); Alert (idcardinfo.gender + "|" + idcardinfo.birthday); Примечание. При вводе и определении того, существует ли та же идентификационная карта в базе данных (1), если вы вводите 15-битный идентификатор: сначала выясните, существует ли 15-битный идентификатор. Если его не существует, вам нужно преобразовать 15-битную идентификационную карту в 18-битную идентификационную карту. Если его все еще не существует, вы можете войти в систему. (2) Если вы вводите 18-битный удостоверение личности: сначала узнайте, существует ли 18-битный идентификатор. Если его не существует, вам нужно преобразовать 18-битную идентификационную карту в 15-битную идентификационную карту. Если его все еще не существует, вы можете войти в систему. Если вы найдете соответствующую 15-битную идентификационную карту, вам необходимо обновить 15-битную до 18-битной.Приведенный выше простой пример проверки JS 15-битных и 18-битных удостоверений личности-это все контент, которым я делюсь с вами. Я надеюсь, что вы можете дать вам ссылку, и я надеюсь, что вы сможете поддержать Wulin.com больше.