1.4 KiB
1.4 KiB
中国身份证号码的校验涉及严格的规则,主要用于验证号码的格式合法性(是否符合国家标准),但无法验证证件真实性(需对接公安系统)。以下是完整的校验规则和实现逻辑:
身份证号码结构(18位)
AAAAAA YYYYMMDD XXX C
地址码(AAAAAA):前6位,代表户籍所在地(需符合最新行政区划代码)。
出生日期码(YYYYMMDD):第7-14位,必须为有效日期(如19900101)。
顺序码(XXX):第15-17位,奇数男性、偶数女性。
校验码(C):第18位,由前17位计算得出(0-9或X)。
校验码计算规则
权重分配:前17位分别乘以固定权重系数:
[7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]
加权求和:
S = Sum(ID[i] * W[i]) (i=0~16)
取模11: S_mod = S % 11
映射校验码:根据余数S_mod查表:
| 余数 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 校验码 | 1 | 0 | X | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 |
校验步骤(代码实现逻辑) 基本检查:
长度必须为18位
前17位全为数字
第18位是数字或X
地址码校验:
前6位在有效行政区划列表中(需定期更新)
日期校验:
第7-14位转换为日期(如1990-01-01),检查是否为有效日期
校验码计算:
按权重计算并比对最后一位