身份证号码编码规则

早期的身份证号码称之为社会保障号,为15位,1999年开始,更名为公众民份证号码,即第二代身份证号码,为18位,且终身不变。

公民身份证号码是特征组合码,由前17位数字本体码和最后一位数字校验码组成,排列顺序从左至右依次为六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。

地址码: 表示编码对象常住户口所在县(市、旗、区)的行政区划代码。对于新生儿,该地址码为户口登记地行政区划代码。需要没说明的是,随着行政区划的调整,同一个地方进行户口登记的可能存在地址码不一致的情况。行政区划代码按GB/T2260的规定执行。

出生日期码:表示编码对象出生的年、月、日,年、月、日代码之间不用分隔符,格式为YYYYMMDD,如19880328。按GB/T 7408的规定执行。原15位身份证号码中出生日期码还有对百岁老人特定的标识,其中999、998、997、996分配给百岁老人。

顺序码: 表示在同一地址码所标识的区域范围内,对同年、同月、同日出生的人编定的顺序号,顺序码的奇数分配给男性,偶数分配给女性。

校验码: 根据本体码,通过采用ISO 7064:1983,MOD 11-2校验码系统计算出校验码。算法可参考下文。前面有提到数字校验码,我们知道校验码也有X的,实质上为罗马字符X,相当于10。

15 位与 18 位身份证号码的差异

  • 出生日期码:15位身份证号码中出生日期码为6位,其中年份代码仅有2位,如590328,代表1959年生。
  • 校验码:15位身份证号码中无校验位。

校验码算法

将本体码各位数字乘以对应加权因子并求和,除以11得到余数,根据余数通过校验码对照表查得校验码。

加权因子如下:

位置序号1234567891011121314151617
加权因子7910584216379105842

校验码:

余数012345678910
校验码10X98765432

比如本体码为 11010519491231002

  1. 各位数与对应加权因子乘积求和:

    1 * 7 + 1 * 9 + 0 + 10 + ... + 0 * 2 = 167
  2. 对求和进行除 11 得余数 167 % 11 = 2
  3. 根据余数 2 对照校验码得 X

因此完整身份证号码为: 11010519491231002X

标签: 算法, 实名制, 校验算法

评论已关闭