演算法實現身份證最後一位校驗碼

2021-10-04 14:33:20 字數 998 閱讀 5852

一直以為身份證最後幾位是隨機生成的,今日與人交談,發現自己太天真了,現在讓我們來研究一下身份證最後一位校驗碼

根據《中華人民共和國國家標準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 驗證校驗碼是...