一直以為身份證最後幾位是隨機生成的,今日與人交談,發現自己太天真了,現在讓我們來研究一下身份證最後一位校驗碼
根據《中華人民共和國國家標準gb 11643-1999》中有關公民身份號碼的規定,公民身份號碼是特徵組合碼,由十七位數字本體碼和一位數字校驗碼組成。排列順序從左至右依次為:六位數字位址碼,八位數字出生日期碼,三位數字順序碼和一位數字校驗碼。順序碼的奇數分給男性,偶數分給女性。校驗碼是根據前面十七位數字碼,按照iso 7064:1983.mod 11-2校驗碼計算出來的檢驗碼。
身份證最後一位是根據前面十七位數字碼,按照iso 7064:1983.mod 11-2校驗碼計算出來的檢驗碼。作為尾號的校驗碼,是由號碼編制單位按統一的公式計算出來的,如果某人的尾號是0-9,都不會出現x,但如果尾號是10,那麼就得用x來代替,因為如果用10做尾號,那麼此人的身份證就變成了19位,而19位的號碼違反了國家標準,並且我國的計算機應用系統也不承認19位的身份證號碼。ⅹ是羅馬數字的10,用x來代替10,可以保證公民的身份證符合國家標準。那麼具體是怎麼實現的呢?
c++ 演算法實現
#include
#include
using
namespace std;
intmain()
; string id,map=
"10x98765432"
; cout<<
"身份證號:(前十七位)"
; cin>>id;
if(id.
length()
!=17
) cout<<
"輸入錯誤"
;else
return0;
}
演算法不足:沒有對輸入的每乙個字元進行檢驗,如需應用到實際中,需要稍作修改 身份證校驗碼
身份證號碼中的校驗碼是身份證號碼的最後一位,是根據gb 11643 1999中有關公民身份號碼的規定,根據精密的計算公式計算出來的。公民身份號碼是特徵組合碼,由十七位數字本體碼和一位數字校驗碼組成的十八位號碼。表示編碼物件常住戶口所在縣 市 旗 區 的行政區劃 按gb t2260的規定執行。表示編碼...
身份證校驗碼計算
最近看乙份文件看到身份證規則,覺得很有趣,這裡記錄一下如何計算校驗碼 中華人民共和國國家標準gb 11643 1999 中有關公民身份號碼的規定,公民身份號碼是特徵組合碼,由十七位數字本體碼和一位數字校驗碼組成。排列順序從左至右依次為 簡單舉例 現在去翻了國標文件 gb t 2260 翻到四川省廣元...
Java實現身份證校驗演算法
public class validatenumberid public static boolean cleckidnumber string id 加權因子公式 2的n 1次冪除以11取餘數,n就是那個i,從右向左排列。int sum 0 用於加權數求和 for int i 0 i 驗證校驗碼是...