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