本文主要是介绍身份证号码编码方法及校验算法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
身份证号码编码方法及校验算法
1 身份证号码的字段构成:
地址码
身份证前六位,表示户口所在县(市、旗、区)的行政区划代码。
生日码
身份证第七至第十四位,表示出生的年、月、日。
顺序码
身份证十五到十七位,为同一地址码所标识的区域范围内,对同年、月、日出生的人员编订的顺序号。其中第十七位奇数分给男性,偶数分给女性。
校验码
身份证最后一位,根据前面十七位数字码,按照ISO7064:1983.MOD11-2计算出来的校验码。作为尾号的校验码,是由号码编制单位按统一的公式计算出来的,如果某人的尾号是0-9,都不会出现X,但如果尾号是10,那就用X替代,因为如果用10作尾号,此人的身份证号码就变成了19位,为了身份证号码数位的一致性,用罗马字母X替代10。
2 校验码具体的计算方法
将前面的身份证号码17位数分别乘以不同的系数。第i位对应的数为[2^(18-i)]mod11。从第一位到第十七位的系数分别为:7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 .
将这17位数字和系数相乘的结果相加.
用加出来的和除以11,看余数是多少.
余数只可能有0 1 2 3 4 5 6 7 8 9 10这11个数字。其分别对应的最后一位身份证的号码为1 0 X 9 8 7 6 5 4 3 2;
通过上面得知如果余数是2,就会在身份证的第18位数字上出现罗马数字的Ⅹ。如果余数是10&#x
这篇关于身份证号码编码方法及校验算法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!