身份证号最后一位校验码是怎么算出来的?

4 个讲解板块 · 关联 2 款站内工具 · 内容最后核对 2026-10-08

18 位身份证的最后一位不是随手定的,而是一个加权取模算出来的校验位——连那个 X 也是算出来的。

直接答案

身份证号第 18 位校验码,是把前 17 位数字按固定加权因子相乘后求和,再用这个和除以 11 取余数,最后按「余数 → 校验码」对照表查出来的一个字符。

加权因子从第 1 位到第 17 位依次是 7、9、10、5、8、4、2、1、6、3、7、9、10、5、8、4、2;余数 0 到 10 依次对应校验码 1、0、X、9、8、7、6、5、4、3、2。所以校验码里出现的 X 不是字母乱入,而是余数为 2 时的正常取值。

很多人第一次注意到身份证号最后一位,是因为它出现了字母 X。有人猜是「未知」,有人猜是「特殊标记」,其实它只是模 11 校验里一个普通的取值。

这套算法来自国家标准 GB 11643-1999,采用 ISO 7064:1983 的 MOD 11-2 校验方案。它的作用是在录入、传输环节快速发现号码抄错:只要有一位数字写错,算出来的校验码几乎必然对不上,这也是各种实名系统能当场判断「号码格式不合法」的原理。

1校验码的四步算法

手算一遍只需要四步,不需要任何工具。

  1. 把前 17 位数字逐位取出,从第 1 位排到第 17 位。
  2. 每位分别乘以对应的加权因子:7、9、10、5、8、4、2、1、6、3、7、9、10、5、8、4、2。
  3. 把 17 个乘积相加,得到总和 S。
  4. 计算 S 除以 11 的余数,按下面那张表查出校验码,它就是第 18 位。

2余数与校验码对照表

这是标准给出的完整映射关系,可以逐行对照。注意它不是单调递增的,方向很容易记反。

余数(S mod 11)校验码
01
10
2X
39
48
57
66
75
84
93
102

余数越大校验码越接近 2,余数 0 对应的是 1,余数 2 对应的才是 X。这张表不能反着背。

3一个能算出 X 的例子

取前 17 位 11010519491231002,逐位乘因子后求和得到 167,167 除以 11 的余数是 2,查表得校验码 X,所以完整号码是 11010519491231002X。换一个号码,把结果套进同一张表就行。

第 1 到 6 位
行政区划代码,对应出生登记所在的省市区县
第 7 到 14 位
出生日期,格式是 YYYYMMDD
第 15 到 17 位
顺序码,同一地区同一天出生的人按顺序编号;第 17 位奇数给男性、偶数给女性
第 18 位
校验码,取值范围是 0 到 9 或大写 X

4校验失败常见原因对照

校验位只能发现「抄错」,不能发现「伪造」。下面几类是最常见的报错场景。

现象原因怎么处理
提示校验位错误某一位数字抄错、漏打或顺序颠倒取前 17 位重新计算校验位,与原件比对
末位写成小写 x部分系统只认大写统一改写为大写 X 再提交
长度不足 18 位老式 15 位号码,或粘贴时丢了字符15 位号码要先补全为 18 位再校验
行政区划代码对不上区划代码后来被调整或撤并校验通过与否和区划是否现役无关,需另查区划沿革

相关疑问

校验码能判断身份证号是真是假吗?

不能。校验位保证的只是「这串数字在数学上成立」,不保证这个号码真实存在、也不保证它属于某个人。要核验真伪必须走官方实名核验渠道,站内工具只做格式检查与校验位计算。

为什么有的身份证号最后一位是小写 x?

国标规定校验码用大写 X,但不少系统允许小写输入。做数据存储时建议统一转成大写,否则同一个号码可能出现两种写法,导致去重失败。

15 位的旧身份证号怎么校验?

15 位号码本身没有校验位,需要先补成 18 位:在第 7 位之前插入「19」补全年份,再按算法算出第 18 位。补全后的号码在数学上成立,但不一定与当年的真实号码一致。

自己怎么复算核对?

按上面的加权因子逐位相乘求和再取模,对照余数表即可;也可以直接用站内工具输入前 17 位,工具会给出校验位与计算过程。

内容标识:本页内容由人工智能辅助生成,并经人工核对与编辑。详见 人工智能生成内容标识说明。
内容说明:本页针对具体使用问题作答,方法步骤与数值由本站自行整理与复算,事实性内容以对应官方规范与文档为准。内容最后核对日期:2026-10-08。若发现错误,欢迎通过页脚反馈入口告知。