身份证号校验不通过是怎么回事?18 位校验位算法与逐位核对方法
往全国公务员管理信息系统里批量导入人员时,遇到提示某人「身份证号校验不通过」,很多人第一反应是「我明明照着档案一个字一个字敲的,怎么会错」。别急——18 位身份证的最后一位不是随便填的,它是前 17 位按固定公式算出来的「校验位」,只要前面错一位、或最后一位填错,公式一算对不上,号码就被判为非法。 本文把这套算法讲透,再给你一份可以照着做的逐位核对步骤,帮你定位到底错在哪一位。

一、先看现象:报错文案长什么样
导入或预检时,这类问题通常以这样的面孔出现(示例,均为虚构号码):
- 系统侧:导入某人时提示身份证号格式非法 / 校验失败,该行被拒收或跳过(具体文案以你所用版本界面为准)。
- 工具预检侧,文案更直白,例如:「张三:身份证号「110101****0513」校验不通过(疑似 Excel 数字精度截断或填写错误),已跳过新增建档」。
共同点是:号码看着是 18 位、也全是数字(末位可能是 X),位数没问题,但就是过不了校验。这说明问题出在「校验位算法」这一关,而不是位数或格式。
二、先分清:是校验位错,还是号码被改坏了
「校验不通过」有两种完全不同的成因,处理方式也不同,先对号入座:
| 情况 | 典型表现 | 本质 | 怎么办 |
|---|---|---|---|
| 号码被 Excel 改坏 | 曾显示成 1.101E+17 科学计数、末几位变成 0 | 精度截断,数据已损坏 | 见身份证号变科学计数/导入失败,须回原始底册重取 |
| 号码没坏但填错一位 | 显示完整 18 位、无科学计数痕迹 | 手输错一位 / 末位校验码填错 | 按本文第三、四节逐位核对 |
| 同号被当两人 | 一人两条记录、x/X 大小写不一 | 重复号 | 见身份证号重复怎么办 |
如果你已经排除了「被 Excel 截断」(号码从没变过科学计数、末位不是被归零的 0),那基本就是手误填错了某一位——这正是校验位算法能帮你抓出来的场景。
三、原理:第 18 位校验码是怎么算出来的
这套算法是全国统一的国家标准(GB 11643),官方系统和各类填报工具用的都是同一套。核心就三步:加权求和 → 除以 11 取余数 → 查表得校验码。
第 1 步:前 17 位各乘一个「加权因子」
从第 1 位到第 17 位,每位数字乘上对应的加权因子,因子是固定的一串:
| 位置(第几位) | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 加权因子 | 7 | 9 | 10 | 5 | 8 | 4 | 2 | 1 | 6 | 3 | 7 | 9 | 10 | 5 | 8 | 4 | 2 |
把「每位数字 × 对应因子」的结果全部加起来,得到一个总和。
第 2 步:总和除以 11,取余数
用上一步的总和除以 11,只看余数(余数只可能是 0 到 10 共 11 种)。
第 3 步:余数查表,得到第 18 位
余数对应一个校验码,这就是合法的第 18 位。注意余数为 2 时校验码是大写 X(罗马数字 10,代表两位所以用 X 顶一位):
| 余数 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 校验码 | 1 | 0 | X | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 |
算出来的这一位,必须和号码实际的第 18 位一模一样,否则就是「校验不通过」。
一个完整的算例(虚构号码)
以虚构号码 62999919900307110X 为例(开头的 629999 是不存在的行政区划代码,这样这个演示号不可能和任何真人的号撞上),前 17 位是 62999919900307110:
- 逐位相乘再相加:6×7 + 2×9 + 9×10 + 9×5 + 9×8 + 9×4 + 1×2 + 9×1 + 9×6 + 0×3 + 0×7 + 3×9 + 0×10 + 7×5 + 1×8 + 1×4 + 0×2 = 442。
- 442 ÷ 11 = 40 余 2。
- 查表:余数 2 → 校验码 X。
- 号码实际末位正是
X,一致,校验通过。
如果这个号码末位被写成了 2、10 或小写 x,算出来是大写 X、实际不是,系统就会判它非法。
顺带说明两点:末位的 X 必须大写、且只能出现在第 18 位,写成小写 x、或写成 10、或误当成字母删掉,都会校验失败(规范工具会先把 x 自动归一成大写 X 再校验,但导入官方系统前建议自己统一成大写)。另外,15 位的老身份证(上世纪的旧号)没有校验位,不参与这套校验,按合法处理,不用套本文的算法。

四、逐位核对:怎么定位错在哪一位
校验不通过只告诉你「这个号码不对」,不会告诉你「错在第几位」。想快速定位,按下面顺序做:
- 先和权威底册逐位比对。 打开人事档案 / 采集底册里的原始号码,和 Excel 里的一位一位地对,别整体扫一眼。最容易错的是形近数字:
1和7、0和6/8、3和8、5和6。 - 重点看出生日期段(第 7~14 位)。 这 8 位是
YYYYMMDD,本身就有规律:月份只能 0112、日只能 0131。若出现13月、00日、32日,一眼就能揪出。 - 再看末位校验码(第 18 位)。 如果前 17 位和底册完全一致,那就是末位填错了——用第三节的算法重算一遍,把末位改成算出来的正确值。常见错误是本该是
X却写了0或漏填。 - 实在找不出,用算法反推缩小范围。 按第三节手算一遍加权总和,若你的总和和「正确号码应有的总和」差一个小数(比如差 6),说明很可能是某一位数字被写大 / 写小了对应的量,结合加权因子能进一步缩小到哪几位可疑。这一步偏进阶,日常做到第 1~3 步基本就能定位。
核对时切记:举例、测试一律用虚构占位号(如 11010119900307XXXX、化名「张三/李四」),真实公民身份证号属个人敏感信息,不要贴到聊天、截图或任何外部文档里。
五、预防清单:批量填报前过一遍
- 身份证列固定设为「文本」格式再录入,从源头杜绝科学计数截断(这是「校验不通过」最大的一类来源,详见科学计数篇)。
- 录完抽查几条:号码 18 位、左对齐、末位与底册一致、X 为大写。
- 别手动补 / 改末位校验码:如果你不确定末位,宁可回底册核实原号,也别自己「猜」一位填上——猜错照样过不了校验。
- 统一 x/X 大小写,避免同一个人因大小写被当成两条记录(参见身份证号重复)。
- 一份干净、格式正确的名册模板存档复用,别每次从零新建。
六、顺带一句:让工具在导入前就把错号挑出来
**报数侠·公务员信息填报助手,专为批量快速填报全国公务员管理信息系统而生。**它把系统数据导出到 Excel,批量修改、校验后再导回;导入前会提示身份证位数、校验位和 Excel 精度截断等问题。
获取与试用:baoshuxia.com。人员数据在本机处理、不上传,联网仅用于授权、版本检查与支付;更多导入步骤见批量导入全流程。
本文由第三方民间站点整理,仅作填报参考。「全国公务员管理信息系统」为官方系统,本站与其无隶属、授权或合作关系;报数侠为独立第三方辅助工具,不冒充官方、不分发任何官方安装包。密码重置、系统下载等请咨询本单位信息管理员或上级组织部门。文中号码、姓名均为虚构示例,请勿使用真实公民个人信息。
逐人逐字段手工录入,太耗时?
报数侠·公务员信息填报助手能把整理好的 Excel 批量导入系统、顺带做字段与单位校验,把机械的录入活省下来。工具仅帮你省手工,系统本体与权威填报口径仍以官方为准。
了解报数侠 →