申明:本文除特別說(shuō)明外,身份證號(hào)碼專(zhuān)指18位公民身份號(hào)碼
一、身份證號(hào)碼結(jié)構(gòu)
早期‘身份證號(hào)碼’叫‘社會(huì)保障號(hào)’,為15位,1999年開(kāi)始更名為公民身份證號(hào)碼,即第二代身份證,為18位,且終身不變。
430512198908131367
公民身份號(hào)碼是特征組合碼,由前十七位數(shù)字本體碼和最后一位數(shù)字校驗(yàn)碼組成。排列順序從左至右依次為六位數(shù)字地址碼,八位數(shù)字出生日期碼,三位數(shù)字順序碼和一位數(shù)字校驗(yàn)碼。
地址碼: 表示編碼對(duì)象常住戶(hù)口所在縣(市、旗、區(qū))的行政區(qū)劃代碼。對(duì)于新生兒,該地址碼為戶(hù)口登記地行政區(qū)劃代碼。需要沒(méi)說(shuō)明的是,隨著行政區(qū)劃的調(diào)整,同一個(gè)地方進(jìn)行戶(hù)口登記的可能存在地址碼不一致的情況。行政區(qū)劃代碼按GB/T2260的規(guī)定執(zhí)行。
出生日期碼:表示編碼對(duì)象出生的年、月、日,年、月、日代碼之間不用分隔符,格式為YYYYMMDD,如19880328。按GB/T 7408的規(guī)定執(zhí)行。原15位身份證號(hào)碼中出生日期碼還有對(duì)百歲老人特定的標(biāo)識(shí),其中999、998、997、996分配給百歲老人。
順序碼: 表示在同一地址碼所標(biāo)識(shí)的區(qū)域范圍內(nèi),對(duì)同年、同月、同日出生的人編定的順序號(hào),順序碼的奇數(shù)分配給男性,偶數(shù)分配給女性。
校驗(yàn)碼: 根據(jù)本體碼,通過(guò)采用ISO 7064:1983,MOD 11-2校驗(yàn)碼系統(tǒng)計(jì)算出校驗(yàn)碼。算法可參考下文。前面有提到數(shù)字校驗(yàn)碼,我們知道校驗(yàn)碼也有X的,實(shí)質(zhì)上為羅馬字符X,相當(dāng)于10.
二、15位與18位身份證號(hào)碼差異
出生日期碼:15位身份證號(hào)碼中出生日期碼為6位,其中年份代碼僅有2位,如590328,代表1959年生。
校驗(yàn)碼:15位身份證號(hào)碼中無(wú)校驗(yàn)位。
三、校驗(yàn)碼算法
將本體碼各位數(shù)字乘以對(duì)應(yīng)加權(quán)因子并求和,除以11得到余數(shù),根據(jù)余數(shù)通過(guò)校驗(yàn)碼對(duì)照表查得校驗(yàn)碼。
加權(quán)因子:
校驗(yàn)碼:
算法舉例:
本體碼為11010519491231002
第一步: 各位數(shù)與對(duì)應(yīng)加權(quán)因子乘積求和1*7+1*9+0*10+1*5+***=167
第二步:對(duì)求和進(jìn)行除11得余數(shù)167%11=2
第三步:根據(jù)余數(shù)2對(duì)照校驗(yàn)碼得X
因此完整身份證號(hào)為:11010519491231002X
四、編碼規(guī)則的應(yīng)用
如上所述,身份證號(hào)碼是基于一定的規(guī)則的,從身份證號(hào)碼中可以挖掘以下信息:
1、身份證長(zhǎng)度驗(yàn)證:身份證長(zhǎng)度僅存在15位或18位兩種長(zhǎng)度
2、身份證輸入正確性驗(yàn)證:如身份證號(hào)為18位,可根據(jù)本體碼與校驗(yàn)碼得關(guān)系驗(yàn)證身份證號(hào)碼輸入有誤,需要指出的是,驗(yàn)證通過(guò)并不代表身份證號(hào)碼的真實(shí)性。
3、獲得戶(hù)籍注冊(cè)地信息:大部分情況下,該地即為出身地或籍貫。對(duì)應(yīng)時(shí)需留意行政區(qū)劃代碼的更新迭代。
4、出生年月及其正確性
5、性別:順序碼中奇數(shù)為男性,偶數(shù)位為女性
作者:MrColin
鏈接:https://zhuanlan.zhihu.com/p/21286417
來(lái)源:知乎