很多游戲賬號申請,或者某些網站注冊時需要填身份證號,當輸入錯誤的身份證號時會提示出錯,感覺好像真能識別身份證信息一樣,其實不然。
實質上由於其沒有權限接入公安系統,它只能根據最后一位校驗位來判斷該身份證號碼是否有效,為了不泄露個人隱私,而又可以輕松的拿到賬號,可以偽造身份證號,前17為自己隨機偽造,只需要計算出最后一位校驗位即可。
ISO 7064:1983.MOD11-2校驗碼計算法 : (身份證校驗碼-18位)
假設某一17位數字是
17位數字 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7
加權因子 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2
計算17位數字各位數字與對應的加權因子的乘積的和S:1×7+2×9+3×10+4×5+5×8+6×4+7×2+8×1+9×6+0×3+1×7+2×9+3×10+4×5+5×8+6×4+7×2=368;
計算S÷11的余數T:368 mod 11=5;
(( 余數0-10對應校驗碼為[1, 0, X , 9, 8, 7, 6, 5, 4, 3, 2],算法如下 ))
計算(12-T)÷11的余數R,如果R=10,校驗碼為字母“X”;如果R≠10,校驗碼為數字“R”:(12-5)mod 11=7。
該17位數字的校驗碼就是7,聚合在一為123456789012345677。
使用以上算法計算一下自己身份證最后一位,即可知道算法正確與否。
原文鏈接:https://blog.csdn.net/n289950578/article/details/22287389