身份证编码与校验码计算规则

身份证编码规则

根据《中华人民共和国国家标准GB11643-1999》(参考,可能有更新的)中有关公民身份号码的规定,公民身份号码是特征组合码,号码共18位,由17位数字本体码和1位数字校验码组成。

1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8
编码类别 编码位数 位次 描述 细分位次 细分描述
地址码 6 1-6 表示编码对象第一次申领居民身份证时的常住户口所在县(市、旗、区)的行政区划代码。(所有区域的编码可以到网站查询到最新的县及县以上的行政编码资料) 1-2 省份代码
3-4 城市代码
5-6 区县代码
出生日期码 8 7-14 出生年月日
顺序码 3 15-17 对同一地址辖区内同年同月同日生的人群中进行排序的顺序码,县、区级政府所辖派出所的分配码,每个派出所分配码为10个连续号码,例如“000-009”或“060-069”。最后一位(第17位)表示性别,单数为男性分配码,双数为女性分配码,如遇同年同月同日有两人以上时顺延第二、第三、第四、第五个分配码。
校验码 1 18 校验码(身份证最后一位)是根据前面十七位数字码,按照ISO7064:1983.MOD11-2校验码计算出来的检验码。 除了10个阿拉伯数字0-9,还有X,X是罗马数字的10,因此用X来代替数字10

校验码计算规则

校验码是识别一个身份证号码是否真实存在的重要的依据。在某种情况下,我们可以通过校验码来判断一个身份证号码的真伪。

身份证号的前17位,每一位 i 都有一个对应的系数bi,系数表如下:

i 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
ai 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7
bi 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2

(1)每一位 i 中的数值ai与其对应的系数bi相乘求和得到数值sum

sum=\sum_{i=1}^{17}ai\cdot bi

(1)sum除以11得到余数,余数的结果区间是[0,10],共11种可能,用 12 减去余数得到m,m的结果区间是[2,12],若m在 2~10 之间,则该结果即为校验码10 用罗马数字 X 表示;若m为 11~12,则再减去 11,公式如下:

m=12-sum%11

c=\left\{\begin{matrix} m; 2\leq m\leq 10\\ m-11;11\leq m\leq 12 \end{matrix}\right.

注意c=10时,用X代替。

实例验证身份证号码 432831196411150810:

校验码是0,此身份证号码最后一位是0,所以这是一个有效的身份证号码。

猜你喜欢

转载自blog.csdn.net/m0_51660523/article/details/124484168
今日推荐