很多人以为身份证号是随机发放的,其实它有严格的结构:前 6 位是行政区划代码,7–14 位是出生日期,15–17 位是顺序码(第 17 位表示性别),而第 18 位是整个号码的校验码——它存在的意义就是让"抄错一位"的号码立刻暴露。
校验码的计算方法是公开的国家标准(GB 11643-1999),任何人都 能 验证任何一个身份证号的真伪格式。
四步算出第 18 位
- 第一步:把前 17 位数字分别乘以固定权重 7、9、10、5、8、4、2、1、6、3、7、9、10、5、8、4、2
- 第二步:把 17 个乘积相加,得到总和 S
- 第三步:S 除以 11 取余数(0–10)
- 第四步:按余数查对照表得到校验码:0→1,1→0,2→X,3→9,4→8,5→7,6→6,7→5,8→4,9→3,10→2
动手验证一个例子
以前 17 位 11010519491231002 为例:加权求和 = 167,167 ÷ 11 余 2,对照表余 2 → 校验码为 X,完整号码即 11010519491231002X。尾号是 X 不是巧合,而是算出来的结果——所以 X 必须大写书写(小写 x 在正式场合会被退回)。
这套校验能识别什么错误
- 抄写错误:任何一位数字抄错(含漏位、错位),校验位对不上,立刻发现
- 顺序颠倒:相邻两位互换后乘积和改变,同样无法通过校验
- 不能识别的:两个数字同时出错且恰好抵消(概率极低),以及完全伪造但校验位算对的号码
常见问题
为什么有的校验码是数字有的是 X?
余数为 10 时对应的校验值超出了单个数字的范围,国际标准用罗马数字 X 表示 10。X 不是英文字母,书写时应大写。
校验通过就说明这是真实存在的身份证吗?
不是。校验算法是公开标准,任何按规则生成的号码都能通过校验(包括各类测试号码)。格式合法与号码真实登记是两回事,实名核验必须通过官方渠道。