很多游戏账号申请,或者某些网站注册时需要填身份证号,当输入错误的身份证号时会提示出错,感觉好像真能识别身份证信息一样,其实不然。
实质上由于其没有权限接入公安系统,它只能根据最后一位校验位来判断该身份证号码是否有效,为了不泄露个人隐私,而又可以轻松的拿到账号,可以伪造身份证号,前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