在生活中,身份证是用于证明持有人身分的证件,多数是由各国地区政府发行予公民,它将作为每个人独一无二的公民身份证明工具,可以理解为你的个人唯一 ID,通过该 ID 可以直接搜索到你。大量新技术的出现允许身分证包含生物识别信息于其中,如照片、面部特征、指纹、虹膜扫描识别或指纹识别等等信息出现在身份证上。

# 结构与形式

第二代公民的身份证一共 18 位,根据《中华人民共和国国家标准 GB 11643-1999》中关于公民身份号码的规定:由 17 位数字本体码和 1 位校验码组成,从左到右依次位

  • 1~6 位:地址码,表示所在省(直辖市、自治区)、市、区、县的代码
  • 7~14 位:出生日期码,表示公民的出生年(4 位)、月(2 位)、日(2 位)
  • 15~17 位:顺序码,表示同一出生地的顺序,其中,奇数表示男性、偶数表示女性
  • 18 位:根据前面 17 位数字生成的校验码(按照 ISO 7064:1983.MOD 11-2 计算得来)

第二代身份证号码编码规则

身份证号码的最后一位是校验码,基于前面 17 位数字,根据规定的计算规则而来。

校验码的计算方式如下:

  1. 对于前面 17 位数字,每位数字分别乘以一个对应的因数,然后再对这些乘积求和,得到一个值 A。本步骤所用的因数是一个由 17 位数字组成的固定序列,把身份证号码前面得到的 17 位数字乘以固定序列对应位置的每一位,以此类推。

因数固定序列

7、9、10、5、8、4、2、1、6、3、7、9、1、0、5、8、4、2
  1. 把第一步得到的和除以 11,然后获取其余数。例如上面的身份证号码(441302202308057570)和因数相乘之后,计算出来的和是 309,再计算 309 % 11 的余数,得到 1。

余数对照表

余数 校验码
0 1
1 0
2 X
3 9
4 8
5 7
6 6
7 5
8 4
9 3
10 2

根据上面的对照表,我们知道当余数为 1 时,校验码为 0,因此该居民的公民身份证号码应该为 441302202308057570。