身份證號碼校驗位的計算方式
現在的居民身份證由原先的15位號碼升級為18位了。從左至右,第1-2位為省級行政區劃程式碼,第3-4為為地級行政區劃程式碼,第5-6位為縣級行政區劃程式碼,第7-10位為出生年份,第11-12位為出生月份,第13-14為出生日期,第15-17位為順序碼,表示在同一地址碼所標識的區域範圍內,對同年、同月、同日出生的人編定的順序號,順序碼的奇數分配給男性,偶數分配給女性,第18位為作為尾號的校驗碼,是由號碼編制單位按統一的公式計算出來的,如果某人的尾號是0-9,都不會出現X,但如果尾號是10,那麼就得用X來代替,因為如果用10做尾號,那麼此人的身份證就變成了19位。X是羅馬數字的10,用X來代替10,可以保證公民的身份證符合國家標準。
根據《中華人民共和國國家標準GB 11643-1999》中有關公民身份號碼的規定,公民身份號碼是特徵組合碼,由十七位數字本體碼和一位數字校驗碼組成。排列順序從左至右依次為:六位數字地址碼,八位數字出生日期碼,三位數字順序碼和一位數字校驗碼。順序碼的奇數分給男性,偶數分給女性。校驗碼是根據前面十七位數字碼,按照ISO 7064:1983.MOD 11-2校驗碼計算出來的檢驗碼。
下面介紹演算法。
先引入公式:
計算公式令結果為 Y,Y的計算公式為:Y = mod(S, 11)根據下表找出 Y 對應的校驗碼即為要求身份證號碼的校驗碼C。
例如:假設某女性居民的15位身份證號碼是320105820927512,32表示江蘇省,01表示南京市,05表示鼓樓區,820927表示1982年9月27日。512表示是該地區同年同月同日的第512人,其中2表示是女性。那麼,升級為18位後的號碼為32010519820927512C。下面就根據公式來計算C的值。
Y = mod(S, 11)=MOD(313,11)=5
根據校驗值對應表,可知C=7,該人員身份證號碼為:320105198209275127
又如:某男性公民身份證號碼的本體碼為34052419800101001
Y = mod(S, 11)=MOD(189,11)=2
查表得該人員身份證號碼為:34052419800101001X[@more@]
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/563666/viewspace-1017505/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 身份證校驗碼的計算方法
- javascript身份證號碼校驗JavaScript
- PHP校驗15位和18位身份證號PHP
- java 實現從15位~18位的身份證號碼轉換,校驗中國大陸公民身份證、香港居民身份證、澳門身份證和臺灣身份證。Java
- JS校驗身份證號的合法性JS
- 18位身份證校驗演算法演算法
- PHP 驗證身份證號碼PHP
- 用WPS格式轉換工具校驗身份證號碼
- 身份證號碼驗證系統
- 身份證號碼之js驗證JS
- JS驗證18位身份證號的正確性JS
- 精準實現身份證號碼格式校驗程式碼例項
- 精確驗證身份證號碼程式碼
- php與js方式驗證手機號碼和郵件地址的合法性,js驗證身份證號碼PHPJS
- 身份證號碼驗證演算法演算法
- js實現身份證號碼驗證JS
- javascript實現的身份證號碼驗證程式碼JavaScript
- PostgreSQL版的身份證號碼15位轉18位SQL
- excel身份證號計算年齡Excel
- 中國身份證號驗證庫
- C++身份證號驗證C++
- C#驗證身份證號C#
- 在Delphi中使用正規表示式校驗身份證號
- 資料庫學習:查詢新身份證(18位)的校驗位(轉)資料庫
- java——15位身份證號碼升級到18位Java
- javascript實現的身份證號碼合法性驗證程式碼JavaScript
- js正則驗證身份證號JS
- 資料庫的身份驗證方式資料庫
- 精確驗證身份證號碼合法性程式碼例項
- swift 郵箱、密碼、手機號、身份證驗證正則Swift密碼
- 直播app原始碼,進行身份驗證時,檢測身份證位數夠不夠APP原始碼
- 正則實現二代身份證號碼驗證詳解
- 身份證號碼的正規表示式及驗證詳解(JavaScript,Regex)JavaScript
- Javascript使用正則驗證身份證號(簡單)JavaScript
- 靜態密碼已經”OUT”探索身份驗證新方式密碼
- excel身份證號提取年齡公式 身份證號碼提取精確年齡的公式Excel公式
- C++身份核驗介面程式碼、身份證OCR、身份證實名認證APIC++API
- Java身份證號碼的打碼隱藏(加*)Java