身份證號(hào)碼編碼方法
要進(jìn)行身份證號(hào)碼的驗(yàn)證,首先要了解身份證號(hào)碼的編碼規(guī)則。我國(guó)身份證號(hào)碼多由若干位數(shù)字或者數(shù)字與字母混合組成。早期身份證由15位數(shù)字構(gòu)成,這主要是在1980年以前發(fā)放的身份證,后來(lái)考慮到千年蟲(chóng)問(wèn)題,因?yàn)?5位的身份證號(hào)碼只能為1900年1月1日到1999年12月31日出生的人編號(hào),所以又增加了18位身份證號(hào)碼編號(hào)規(guī)則。
15位身份證號(hào)碼編碼較為簡(jiǎn)單,從左到右其15位碼依次為:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
A A A A A A Y Y M M D D N N S
前六位AAAAAA是身份證編碼對(duì)象的所在地(出生地)的編碼,該號(hào)碼可由國(guó)家統(tǒng)計(jì)局公布的相關(guān)標(biāo)準(zhǔn)中得到。YY表示出生年的后兩位,MM和DD表示出生月和日,不足兩位的高位補(bǔ)0,NNS為順序號(hào),無(wú)法確定。S為性別識(shí)別碼,男性為奇數(shù),女性為偶數(shù)。例如,一位于1965年2月16日出生在湖北省巴東縣的女性的15位身份證號(hào)碼為:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
A A A A A A Y Y M M D D N N S
4 2 2 8 2 3 6 5 0 2 1 6 0 2 2
18位身份證號(hào)碼比15位身份證號(hào)碼多出的3位中的兩位用來(lái)補(bǔ)充2位的年份為4位,另外1位作為校驗(yàn)碼存在。一項(xiàng)由國(guó)家質(zhì)量技術(shù)監(jiān)督局發(fā)布的標(biāo)準(zhǔn)對(duì)身份證號(hào)碼的編碼規(guī)則做了具體的規(guī)定。該標(biāo)準(zhǔn)為名《公民身份號(hào)碼》,編號(hào)GB11643-1999,為國(guó)家強(qiáng)制標(biāo)準(zhǔn)。它代替了1989年公布的名為《社會(huì)保障號(hào)碼》GB11643-1989國(guó)家強(qiáng)制標(biāo)準(zhǔn),從1999年7月1日開(kāi)始強(qiáng)制實(shí)施。該標(biāo)準(zhǔn)的內(nèi)容介紹如下。
1.標(biāo)準(zhǔn)適用范圍:規(guī)定了公民身份號(hào)碼的編碼對(duì)象、號(hào)碼的具體結(jié)構(gòu)組成和表現(xiàn)形式,并規(guī)定每個(gè)編碼對(duì)象將獲得一個(gè)唯一的、終身不變的號(hào)碼。
2.編碼對(duì)象:具有中華人民共和國(guó)國(guó)籍的公民。
3.號(hào)碼的結(jié)構(gòu)組成和表現(xiàn)形式。
該標(biāo)準(zhǔn)中對(duì)號(hào)碼的構(gòu)造組成和表現(xiàn)形式進(jìn)行了如下的闡述:
號(hào)碼由17位本體碼和1位校驗(yàn)碼組成,這18位號(hào)碼從左到右依次為:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
A A A A A A Y Y Y Y M M D D N N S C
前六位AAAAAA同樣是地區(qū)編碼,按照國(guó)家推薦標(biāo)準(zhǔn)GB/T2260的規(guī)定進(jìn)行編碼。YYYY是擴(kuò)充后的四位出生年碼,MM和DD為出生月和日碼,不足兩位的仍然在高位補(bǔ)0。NNS為無(wú)法確定的順序碼,其中S為性別識(shí)別碼,同樣將奇數(shù)分配給男性,偶數(shù)分配給女性。第18位校驗(yàn)位是對(duì)前17位進(jìn)行如下的計(jì)算得到的。
使用數(shù)組B[I]表示從左到右第I個(gè)數(shù)字,W[I]表示第I位上的加權(quán)因子,需要注意的是,為了方便講述,這里的數(shù)組第一個(gè)是B[1]而不是計(jì)算機(jī)中的B[0],W[I]也是同樣。加權(quán)因子依次為:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2
得到第18位的值C首先要利用這個(gè)加權(quán)因子計(jì)算出 的值, 的計(jì)算公式為:
即,將前17位的數(shù)字與其對(duì)應(yīng)的加權(quán)因子相乘,再將積相加,最后的和再除以11,取其余。除以11最后的余有11種可能,從0到10。通過(guò)余再做一個(gè)轉(zhuǎn)換,即可得到相應(yīng)的第18位上的校驗(yàn)碼,余數(shù)和校驗(yàn)碼的轉(zhuǎn)換如下:
余數(shù) 0 1 2 3 4 5 6 7 8 9 10
對(duì)應(yīng)的校驗(yàn)碼 1 0 X 9 8 7 6 5 4 3 2
下面我們來(lái)計(jì)算一下一位湖北省襄樊市襄城區(qū)在1986年11月9日出生的男性的18位身份證號(hào)碼,其順序號(hào)假定為321(男性為奇數(shù))。該身份證號(hào)前17位為:
4 2 0 6 8 2 1 9 8 6 1 1 0 9 3 2 1
先計(jì)算前17位與加權(quán)因子的積的和除以11的余:
余數(shù)為1則其對(duì)應(yīng)的第18位校驗(yàn)碼為0,該男性的18位身份證號(hào)碼為:
4 2 0 6 8 2 1 9 8 6 1 1 0 9 3 2 1 0
校驗(yàn)碼可以作為一種判斷一個(gè)正確的身份證號(hào)的前17位是否有錯(cuò)誤發(fā)生的標(biāo)準(zhǔn),但這并不一定在任何情況下都是有效的,在某些情況下的錯(cuò)誤也是這個(gè)校驗(yàn)位無(wú)法檢測(cè)的,比如,多個(gè)數(shù)字發(fā)生錯(cuò)誤,例如,當(dāng)上例中的身份證號(hào)碼由42068219861109321變?yōu)?2098219861106321后,其校驗(yàn)碼仍為0。
舉報(bào) 222.69.137.* 2009