身份證校驗碼計算

2021-10-10 11:56:03 字數 1126 閱讀 3299

最近看乙份文件看到身份證規則,覺得很有趣,這裡記錄一下如何計算校驗碼

《中華人民共和國國家標準gb 11643-1999》中有關公民身份號碼的規定,公民身份號碼是特徵組合碼,由十七位數字本體碼和一位數字校驗碼組成。

排列順序從左至右依次為:

簡單舉例:

現在去翻了國標文件: gb/t 2260

翻到四川省廣元市市中區 的地區碼為510802

我們就可以人為製造乙個身份證號碼: 51080219900603052_ 這個身份證號碼

表示 四川省廣元市市中區 2023年6月3日出生的 第26位女生 。

問題來了 那麼上訴人為編造的 身份證號碼最後一位校驗碼是多少了呢? 這裡得去翻國標 gb 11643-1999

校驗碼計算公式:

現在把上訴校驗碼計算公式翻譯為js的**,

1 首先將身份證前17位進行加權求和。加權值位表一中的值

2 對加權求和結果對11取餘數

3 對餘數數值按照表2進行對映。

得到以下**

function

getcheckcode

(originalidarray)

return checkcodemap.

get(sum %11)

;}const originalid =

'51080219900603052'

;const originalidarray = originalid.

split(''

);const checkcode =

getcheckcode

(originalidarray)

const

id= originalid + checkcode;

console.

log(id)

;// 510802199006030524

算出來最後一位身份證校驗碼號碼為

身份證校驗碼

身份證號碼中的校驗碼是身份證號碼的最後一位,是根據gb 11643 1999中有關公民身份號碼的規定,根據精密的計算公式計算出來的。公民身份號碼是特徵組合碼,由十七位數字本體碼和一位數字校驗碼組成的十八位號碼。表示編碼物件常住戶口所在縣 市 旗 區 的行政區劃 按gb t2260的規定執行。表示編碼...

身份證第18位 校驗碼 的計算方法

身份證第18位 校驗碼 的計算方法 a.將前面的身份證號碼17位數分別乘以不同的係數。從第一位到第十七位的 係數分別為 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 b.將這17位數字和系統相乘的結果相加。c.用加出來和除以11,看餘數是多少?d.餘數只可能有 0 1 2 ...

身份證校驗

int isright string card cout 9 wi sum 11 if p 17 x p 17 x 最後一位為 x 或 x else if id wi p 17 判斷計算出的身份證校驗碼與輸入是否相符 return error 判斷身份證號碼中的年月日是否正確 bool birthd...