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

身份证编码规则

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

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

校验码计算规则

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

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

i1234567891011121314151617
ai12345678901234567
bi7910584216379105842

(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,所以这是一个有效的身份证号码。

 

 

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

肆〇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值