Files
home-api/packages/serv/resources/ID/validate.md
2025-08-13 22:07:41 +08:00

1.4 KiB
Raw Blame History

中国身份证号码的校验涉及严格的规则,主要用于验证号码的格式合法性(是否符合国家标准),但无法验证证件真实性(需对接公安系统)。以下是完整的校验规则和实现逻辑:

身份证号码结构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检查是否为有效日期

校验码计算:

按权重计算并比对最后一位