关于身份证最后一位校验码的生成

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

关于身份证最后一位校验码的生成
之前的一篇博客写的是关于Luhn算法,其中有提到过校验码,自我感觉对这个校验码的认识不够,于是我就摆渡了一下,是这么说的“校验码通常是一组数字的最后一位,由前面的数字通过某种运算得出,用以检验该组数字的正确性。

常见的校验码有中华人民共和国居民身份证的最后一位,ISBN号码的最后一位等。

代码作为数据在向计算机或其它设备进行输入时,容易产生输入错误,为了减少输入错误,编码专家发明了各种校验检错方法,并依据这些方法设置了校验码。


正好看到了“常见的校验码有中华人民共和国居民身份证的最后一位”,然后就勾起了我的兴趣,因为之前有遇到过身份证的最后一位是x,所以今天就写了这篇文章来研究一下最后一位是怎么产生的,嘿嘿。

这里采用的是〖GB11643-1999〗中规定的是18位身份证号码:公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成。

排列顺序从左至右依次为:六位数字地址码(表示编码对象常住户口所在县(市、镇、区)的行政区划代码。

1-2位省、自治区、直辖市代码;3-4位地级市、盟、自治州代码;5-6位县、县级市、区代码,行政区划代码的第5-6位数按行政区划的不同是有号段的,00代表全市、01代表所有市辖区,02-09代表市辖区(城区),11-19代表市辖区(郊区),21-29代表县、81-89代表县级市),八位数字出生日期码,三位数字顺序码(地址码所标识的区域范围内,对同年、月、日出生的人员编定的顺序号。

其中第十七位奇数分给男性,偶数分给女性)和一位数字校验码。

身份证号码的计算方法即为ISO 7064:1983.MOD 11-2校验码计算法。

假设某一17位数字是:17位数字:1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8
加权因子:7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2
计算17位数字各位数字与对应的加权因子的乘积的和Sum=1*7+2*9+3*10+4*5+5*8+6*4+7*2+8*1+9*6+1*3+2*7+3*9+4*10+5*5+6*8 +7*4+8*2=416;计算Sum除11的余数T:416 mod 11=9。

余数只可能有0 1 2 3 4 5 6 7 8 9 10这11个数字。

其分别对应的最后一位身份证的号码为1 0 X 9 8 7 6 5 4 3 2(这就解释了为什么有的身份证号码最后一位是x了)。

所以9对应的数字是3,故所以最后得到的身份证为123456789123456783,嘿嘿,就是这样了。

相关文档
最新文档