一句话回答:X 代表数字 10
身份证号最后一位是校验码,用来验证前 17 位有没有写错。校验码的取值范围是 0 到 10,但 10 占两位,会破坏「身份证固定 18 位」的规则,所以用罗马数字 X 来代替。
也就是说,X 不是字母,是数字 10。它和「第 18 位是 5」「第 18 位是 7」没有本质区别,只是恰好轮到 10 的时候用 X 表示。
顺带说明:X 是罗马数字里的 10,这正好和它代表的数值一致,算是设计上的巧合(也可能是有意选择)。
校验码是怎么算出来的
校验码不是随机产生的,而是用前面 17 位按固定算法推导出来的。这个算法叫「加权求和取模」,分三步。
第一步:把前 17 位分别乘以对应的权重
身份证前 17 位(前 6 位地址码 + 8 位出生日期码 + 3 位顺序码)每一位都有一个固定的权重:
| 位置 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
|---|---|---|---|---|---|---|---|---|---|
| 权重 | 7 | 9 | 10 | 5 | 8 | 4 | 2 | 1 | 6 |
| 位置 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
|---|---|---|---|---|---|---|---|---|
| 权重 | 3 | 7 | 9 | 10 | 5 | 8 | 4 | 2 |
权重序列 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 是固定的,前 9 位和后 8 位有重复但不是简单循环。
第二步:把 17 个乘积相加,再除以 11 取余数
把每一位数字乘以它的权重,得到 17 个乘积,全部加起来得到总和 S,然后用 S 除以 11,取余数。
第三步:用余数查表得到校验码
| 余数 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 校验码 | 1 | 0 | X | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 |
注意余数 2 对应的校验码就是 X。这就是 X 出现的原因。
完整算一遍
拿一个示例号码 11010519491231002 来说明(这是常见的说明性示例,前 17 位):
各位数字与权重相乘:
1×7=7 1×9=9 0×10=0 1×5=5 0×8=0 5×4=20 1×2=2 9×1=9 4×6=24
9×3=27 1×7=7 2×9=18 3×10=30 1×5=5 0×8=0 0×4=0 2×2=4
相加:7+9+0+5+0+20+2+9+24+27+7+18+30+5+0+0+4 = 167
167 ÷ 11 = 15 余 2
查表:余数 2 对应校验码 X。所以完整的身份证号最后一位是 X。
你可以用这个例子验证一下算法是否理解正确。如果手算得到的余数是 2,说明你算对了。
为什么用 11 取模,而不是 10
这涉及校验码的设计原理。用 11 取模有两个好处:
一是能检测出「写错一位」的情况。因为 11 是质数,且权重序列经过精心设计,任何单独一位写错,都会让最终余数发生变化,从而被检测出来。
二是能检测出「相邻两位写颠倒」的情况。这是常见的手写错误(比如把 12 写成 21)。如果用 10 取模就无法可靠检测这种错误。
正因为要留出 0 到 10 共 11 个可能值,而数字只有 0 到 9 十个,所以第 11 个值(10)必须用别的符号表示——于是选用了 X。
校验位能验证什么,不能验证什么
能验证:这个号码是不是「写错了」。如果输入时把某一位打错、或者两位顺序颠倒,校验位就会对不上,算法能立刻发现。这也是为什么各种系统录入身份证号后能立刻提示「号码格式错误」。
不能验证:这个号码是不是真实存在的、是不是属于某个人。因为任何人都可以伪造一个校验位正确的号码——只要按同样的算法算一遍最后一位就行。
这一点很重要:校验位只是「防手误」,不是「防伪造」。所以任何系统都不能只靠校验位来判断身份证真伪,还需要和公安部门的权威数据库比对。看到「校验通过」就认为身份真实,是常见的技术误解。
除了校验位,身份证号还包含什么信息
18 位身份证号由四部分组成:
| 位数 | 含义 |
|---|---|
| 第 1–6 位 | 地址码:前 2 位是省级行政区,中间 2 位是市级,后 2 位是区县级 |
| 第 7–14 位 | 出生日期码:格式为 YYYYMMDD,如 19900101 |
| 第 15–17 位 | 顺序码:同一地区同一天出生的人的排序;第 17 位奇数为男性、偶数为女性 |
| 第 18 位 | 校验码:0–10,10 记作 X |
所以从身份证号里可以读出:出生地(到区县)、出生日期、性别、以及一个校验位。但读不出姓名、住址、具体出生时间等信息。
顺带纠正一个常见误解:第 17 位表示性别,不是第 18 位。很多人记错了位置。
关于隐私的提醒
身份证号属于个人敏感信息。需要提醒的是:
· 不要在公开场合(社交平台、群聊)发送完整身份证号,即使打了马赛克也可能被还原部分信息。
· 需要提供时,建议只在官方渠道或明确的业务场景填写,并留意对方是否有正当理由。
· 很多平台只需要验证身份,不需要留存完整号码,可以询问能否只提供部分信息。
用本站在线校验工具时,号码不会上传服务器——校验全程在你的浏览器里计算,页面不会把你的身份证号发给任何地方。这一点可以用浏览器开发者工具的 Network 面板自行验证。