1. Struktur dan representasi nomor ID
1. Struktur angka
Menurut ketentuan tentang nomor identitas kewarganegaraan dalam standar nasional GB11643-1999 Republik Rakyat Tiongkok, nomor identitas kewarganegaraan adalah kode kombinasi karakteristik, yang terdiri dari kode ontologi numerik tujuh belas digit dan kode verifikasi satu-satu. Urutan pengaturan dari kiri ke kanan: kode alamat enam digit, tanggal delapan digit kode kelahiran, kode urutan tiga digit dan kode verifikasi satu digit.
2. Kode alamat
Kode Divisi Administratif Kabupaten (Kota, Spanduk, Distrik) di mana kediaman permanen objek pengkodean berada diimplementasikan sesuai dengan ketentuan GB/T2260.
3. Tanggal Kode Kelahiran
Ini menunjukkan tahun, bulan dan hari kelahiran objek yang dikodekan. Itu harus dieksekusi sesuai dengan ketentuan GB/T7408. Tidak ada pemisah antara kode tahun, bulan dan hari.
4. Kode urutan
Ini menunjukkan bahwa di dalam area yang diidentifikasi oleh kode alamat yang sama, nomor urutan yang ditugaskan untuk orang yang lahir pada tahun yang sama, bulan, dan hari. Jumlah ganjil dari kode urutan ditugaskan untuk pria dan bahkan angka ditugaskan untuk wanita.
5. Kode verifikasi
(1) Formula jumlah tertimbang untuk kode ontologi tujuh belas digit
S = sum (ai * wi), i = 0, ..., 16, jumlah pertama bobot 17 digit pertama
AI: Menunjukkan nilai angka nomor kartu ID di posisi i-th
WI: mewakili faktor pembobotan pada posisi ke-i
7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2
(2) Mode Perhitungan
Y = mod (s, 11)
(3) Dapatkan kode verifikasi yang sesuai melalui modul
Y: 0 1 2 3 4 5 6 7 8 9 10
Kode verifikasi: 1 0 x 9 8 7 6 5 4 3 2
Dengan kata lain, jika sisanya diperoleh sebagai 1, bit cek terakhir p haruslah 0 yang sesuai.
Nomor 15 digit:
AABBCCYYMMDDXXS
Nomor 18 digit:
AABBCCYYYMMDDXXSP
2. Kode alamat
6 digit pertama dari kartu ID adalah deskripsi Kode Divisi Administratif (disebut sebagai kode digital) (lihat "GB/T 2260-2007 Kode Divisi Administratif Republik Rakyat Tiongkok"): Analisis Prinsip dan Struktur dari Kode Pusat ini mengadopsi tiga lapis REGIONCOULE, yang mewakili provasi Pusat Kode Pusat ini, MUNCICOOL PROVIONAL, yang mengadopsi tiga lapis. Daerah), kota (daerah, prefektur otonom, liga), dan kabupaten (kabupaten otonom, kota-kota tingkat daerah, spanduk, spanduk otonom, distrik kota, kawasan hutan, distrik khusus) di negara saya menurut hierarki.
(1) Digit 1 dan 2: Kode Provinsi tempat Anda berada, mewakili provinsi, wilayah otonom, kotamadya langsung di bawah pemerintah pusat, dan wilayah administrasi khusus.
Tabel Kode Provinsi dan Kota: {11: "Beijing", 12: "Tianjin", 13: "Hebei", 14: "Shanxi", 15: "Batin Mongolia", 21: "Liaoning", 22: "Jilin", 23: "Heilongjijang", 31: "Shanghai", Jilin ", 23:" Heilongjijang ", 31:" Shanghai "," Shanghai "," Shanghai "," Shanghai "," Shanghai "," Jilin ", Jilin:" Heilongjij "," Shanghai "," Shanghai "," 35: "Fujian", 36: "Jiangxi", 37: "Shandong", 41: "Henan", 42: "Hubei", 43: "Hunan", 44: "Guangdong", 45: "Guangxi", 46: "Horan", 50: "Chongqing", 51: ":" ":" 51: "51:" "Yunnan", 54: "Tibet", 61: "Shaanxi", 62: "Gansu", 63: "Qinghai", 64: "Ningxia", 65: "Xinjiang", 71: "Taiwan", 81: "Hong Kong", 82: "Makaoo", 91: "Hong Kong", 82: "Makao", "Hong Kong", 82: "Makao", "82:" Makao ", 81:
(2) Digit ke-3 dan ke-4: Kode Kota Tingkat Provinsi (Kabupaten), yang mewakili Kode Ringkasan Distrik dan kabupaten di bawah yurisdiksi Kota, Wilayah, Prefektur Otonomi, Aliansi, dan Kota secara langsung di bawah Pemerintah Pusat, dan Ringkasan Kode Divisi Administrasi Level Kabupaten secara langsung di bawah provinsional (Autonomy.
―01 ~ 20, 51 ~ 70 berarti sebuah kota, dan kotamadya langsung di bawah pemerintah pusat mengatakan 01 berarti sebuah kota, dan setelah 02 berarti daerah pinggiran di dalam yurisdiksi pemerintah kota;
―21 ~ 50 berarti daerah, prefektur otonom, dan aliansi;
―90 mewakili kode ringkasan divisi administrasi tingkat kabupaten langsung di bawah provinsi (wilayah otonom).
(3) Digit ke-5 dan ke-6: Kode Kabupaten (Kota) tingkat prefektur, yang menunjukkan daerah, daerah otonom, kota tingkat daerah, spanduk, spanduk otonom, distrik kota, kawasan hutan, dan distrik khusus.
―01 ~ 20 berarti kota-kota tingkat kabupaten di bawah yurisdiksi kota, wilayah (prefektur otonom, liga) di bawah yurisdiksi kota-kota tingkat daerah, distrik khusus kota, dan divisi administrasi tingkat kabupaten langsung di bawah provinsi (wilayah otonom). 01 biasanya berarti kode ringkasan yurisdiksi;
―21 ~ 80 berarti daerah, county otonom, spanduk, spanduk otonom, area hutan, dan zona khusus regional;
―81 ~ 99 berarti provinsi (wilayah otonom) memiliki kota tingkat daerah di bawah yurisdiksinya.
3. Lainnya
Nomor ID 15 digit:
Digit ke -7 dan ke -8 adalah tahun kelahiran (dua digit, diwakili oleh dua digit terakhir tahun ini).
No. 9 dan 10 adalah bulan kelahiran.
Tanggal 11 dan 12 mewakili tanggal lahir.
Bit 13 dan 14 adalah kode berurutan, ini adalah angka acak.
Digit ke -15 mewakili jenis kelamin, angka ganjil adalah laki -laki, dan angka genap adalah perempuan.
Nomor ID 18 digit:
Tanggal 7, 8, 9 dan 10 adalah tahun kelahiran (empat digit).
No. 11 dan 12 adalah bulan kelahiran.
Tanggal 13 dan 14 mewakili tanggal lahir.
Bit 15 dan 16 adalah kode urutan.
Posisi ke -17 mewakili jenis kelamin, angka ganjil adalah laki -laki dan bahkan angka adalah perempuan.
Bit terakhir adalah bit cek.
4. Contoh Kode JS
var idcardnoutil = { /*provinsi, tabel kode kota* / provinceandcitys: {11: "beijing", 12: "tianjin", 13: "hebei", 14: "shanxi", 15: "bagian dalam Mongolia ", 21:" Liaoning ", 22:" Jilin ", 23:" Heilongjiang ", 31:" Shanghai ", 32:" Jiangsu ", 33:" Zhejiang ", 34 : "Anhui", 35: "Fujian", 36: "Jiangxi", 37: "Shandong", 41: "Henan", 42: "Hubei", 43: "Hunan", 44: "Guangdong", 45: "Guangxi", 46: "Hainan", 50: "Chongqing", 51: "Sichuan", 52: "Guizhou", 53: "Yunnan", 54: "Tib ET ", 61:" Shaanxi ", 62:" Gansu ", 63:" Qinghai ", 64:" Ningxia ", 65:" Xinxia ", 71:" Taiwan ", 81:" Hong Kong ", 82:" Macao ", 91:" asing "}, /*Setiap faktor pembobotan* /kekuatan: [" 7 "," 9 "," 10 "," 5 "," 8 "," 4 "," 2 "," 1 "," 6 "," 3 "," 7 "," 9 "," 10 "," 5 "," 8 "8" "4", "7", "9", "10", "5", "8" 8 "8" Kode penghitungan ke -18*/ paritybit: ["1", "0", "x", "9", "8", "7", "6", "5", "4", "3", "2"],/*gender*/ gender: {laki -laki: "pria", wanita: "wanita"},/*centang Kode alamat centang = centang = /^ media1-9 bah/d.5}/.test(addresscode); if (check) return false; if (idcardnoutil.provinceandcitys [parseInt (addresscode.substring (0,2))]) {return true; } else {return false; }},/*Periksa kode tanggal*/checkBirthdayCode: function (birdaycode) {var check = /^ media1-9 media/d {3 --(0$ (1-9 ))|(1anjang10-2) :)(0 media1-9)'-2-2); if (check) return 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 = tanggal baru (yyyy, mm-1, dd); if (xdata> new date ()) {return false; // ulang tahun tidak bisa lebih besar dari tanggal saat ini} else if ((xdata.getlyear () == yyyy) && (xdata.getMonth () == mm - 1) && (xData.getDate () == dd)) {return raguan; } else {return false; }}, /*Hitung kode kalibrasi* / getParitybit: function (idCardno) {var id17 = idCardno.substring (0,17); /*Bobot*/ var power = 0; untuk (var i = 0; i <17; i ++) {power+= parseInt (id17.charat (i), 10) * parseInt (idcardnoutil.powers [i]); } /*Model* / var mod = power % 11; kembalikan idcardnoutil.paritybit [mod]; }, /*Verifikasi kode periksa* / checkParitybit: function (idCardno) {var paritybit = idcardno.charat (17) .touppercase (); if (idCardNoutil.getParityBit (idCardno) == parityBit) {return true; } else {return false; }},/*Periksa nomor ID 15-bit atau 18-bit*/checkIdcardno: function (idCardno) {// verifikasi dasar nomor id 15-bit dan 18-bit var check = /^/d {15}|(/d {17}(/d|x|x )))$/.test(idcardno); if (check) return false; // menilai panjangnya menjadi 15-bit atau 18-bit if (idcardno.length == 15) {return idcardnoutil.check15idcardno (idCardno); } else if (idcardno.length == 18) {return idCardNoutil.check18idCardno (idCardno); } else {return false; }}, // Periksa nomor ID 15 digit check15IdCardno: function (idCardno) {// verifikasi dasar nomor ID 15-digit var check = /^ Meat1-9 media/d{7}(0$ (1-9 ))|(1 media0-2 media))(0−ilai1-9 bah)|(ö1-2 media0-9 bah ()|(3 media0-1); if (check) return false; // periksa kode alamat var addresscode = idcardno.substring (0,6); periksa = idcardnoutil.checkaddresscode (addressCode); if (check) return false; var BirddayCode = '19' + idcardno.substring (6,12); // periksa kode tanggal pengembalian idcardnoutil.checkbirthdaycode (birdaycode); }, // Periksa nomor ID 18 digit check18idcardno: function (idCardno) {// verifikasi format dasar dari nomor ID 18-digit var check = /^ media1-9 bah/d.5} media1-9 media/d{3 --(0$ 01-9 ))|(1 bah ,-2 ))(0$ 01-9 bah ()|(tas1-2 media0-9) *|(3 media0-1 media) .)/d.3/d|x|x)$/, if (check) return false; // Periksa kode alamat var addressCode = idCardno.substring (0,6); periksa = idcardnoutil.checkaddresscode (addressCode); if (check) return false; // Periksa kode tanggal var BirddayCode = IDCardNo.substring (6,14); Periksa = IDCardNoutil.CheckBirThayCode (BirdayCode); if (check) return false; //Checkcardnoutil.checkparitybit(idcardno); }, formatDateCn: function (day) {var yyyy = day.substring (0,4); var mm = day.substring (4,6); var dd = day.substring (6); return yyyy + '-' + mm + '-' + dd; }, // Dapatkan informasi getIdcardInfo: function (idcardno) {var idCardInfo = {gender: "", // gender ulang tahun: "" // tanggal lahir (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; }} lain jika (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-bit hingga 15-bit* / 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-bit hingga 18-bit* / getId18: function (idCardno) {if (idcardno.length == 15) {var id17 = idcardno.substring (0,6) + '19' + idcardno.substring (6); var paritybit = idcardnoutil.getParitybit (id17); Return ID17 + ParityBit; } else if (idcardno.length == 18) {return idCardno; } else {return null; }}}; // Verifikasi nomor kartu identitas jQuery.validator.addmethod ("idcardno", function (value, elemen) {return this.optional (elemen) || idcardnoutil.checkidcardno (value);}, "Harap tentukan nomor id yang valid."); // Dapatkan informasi kartu ID var idCardInfo = IDCardNoutil.getidCardInfo (IDCardNo); alert (idcardinfo.gender + "|" + idcardinfo.birthday); Catatan: Saat memasuki dan menentukan apakah kartu ID yang sama sudah ada dalam database (1) jika Anda memasukkan ID 15-bit: pertama-tama cari tahu apakah ada ID 15-bit. Jika tidak ada, Anda perlu mengubah kartu ID 15-bit menjadi kartu ID 18-bit. Jika masih tidak ada, Anda dapat memasuki sistem. (2) Jika Anda memasuki ID 18-bit: pertama-tama cari tahu apakah ID 18-bit ada. Jika tidak ada, Anda perlu mengubah kartu ID 18-bit menjadi kartu ID 15-bit. Jika masih tidak ada, Anda dapat memasuki sistem. Jika Anda menemukan kartu ID 15-bit yang sesuai, Anda perlu memperbarui 15-bit hingga 18-bit.Contoh sederhana di atas dari verifikasi JS kartu ID 15-bit dan 18-bit adalah semua konten yang saya bagikan dengan Anda. Saya harap Anda dapat memberi Anda referensi dan saya harap Anda dapat mendukung wulin.com lebih lanjut.