身份证号校验不通过是怎么回事?18 位校验位算法与逐位核对方法

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

报数侠导入日志「身份证号校验不通过」告警行:18 位校验位算错的行被跳过(示意·非官方,日志虚构脱敏)

一、先看现象:报错文案长什么样

导入或预检时,这类问题通常以这样的面孔出现(示例,均为虚构号码):

  • 系统侧:导入某人时提示身份证号格式非法 / 校验失败,该行被拒收或跳过(具体文案以你所用版本界面为准)。
  • 工具预检侧,文案更直白,例如:「张三:身份证号「110101****0513」校验不通过(疑似 Excel 数字精度截断或填写错误),已跳过新增建档」

共同点是:号码看着是 18 位、也全是数字(末位可能是 X),位数没问题,但就是过不了校验。这说明问题出在「校验位算法」这一关,而不是位数或格式。

二、先分清:是校验位错,还是号码被改坏了

「校验不通过」有两种完全不同的成因,处理方式也不同,先对号入座:

情况典型表现本质怎么办
号码被 Excel 改坏曾显示成 1.101E+17 科学计数、末几位变成 0精度截断,数据已损坏身份证号变科学计数/导入失败,须回原始底册重取
号码没坏但填错一位显示完整 18 位、无科学计数痕迹手输错一位 / 末位校验码填错按本文第三、四节逐位核对
同号被当两人一人两条记录、x/X 大小写不一重复号身份证号重复怎么办

如果你已经排除了「被 Excel 截断」(号码从没变过科学计数、末位不是被归零的 0),那基本就是手误填错了某一位——这正是校验位算法能帮你抓出来的场景。

三、原理:第 18 位校验码是怎么算出来的

这套算法是全国统一的国家标准(GB 11643),官方系统和各类填报工具用的都是同一套。核心就三步:加权求和 → 除以 11 取余数 → 查表得校验码

第 1 步:前 17 位各乘一个「加权因子」

从第 1 位到第 17 位,每位数字乘上对应的加权因子,因子是固定的一串:

位置(第几位)1234567891011121314151617
加权因子7910584216379105842

把「每位数字 × 对应因子」的结果全部加起来,得到一个总和。

第 2 步:总和除以 11,取余数

用上一步的总和除以 11,只看余数(余数只可能是 0 到 10 共 11 种)。

第 3 步:余数查表,得到第 18 位

余数对应一个校验码,这就是合法的第 18 位。注意余数为 2 时校验码是大写 X(罗马数字 10,代表两位所以用 X 顶一位):

余数012345678910
校验码10X98765432

算出来的这一位,必须和号码实际的第 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,一致,校验通过

如果这个号码末位被写成了 210 或小写 x,算出来是大写 X、实际不是,系统就会判它非法。

顺带说明两点:末位的 X 必须大写、且只能出现在第 18 位,写成小写 x、或写成 10、或误当成字母删掉,都会校验失败(规范工具会先把 x 自动归一成大写 X 再校验,但导入官方系统前建议自己统一成大写)。另外,15 位的老身份证(上世纪的旧号)没有校验位,不参与这套校验,按合法处理,不用套本文的算法。

身份证第 18 位校验位算法速查:前 17 位×加权因子 → 求和 → 除 11 取余 → 查表得校验码(末位 X = 罗马数字 10;虚构脱敏号)

四、逐位核对:怎么定位错在哪一位

校验不通过只告诉你「这个号码不对」,不会告诉你「错在第几位」。想快速定位,按下面顺序做:

  1. 先和权威底册逐位比对。 打开人事档案 / 采集底册里的原始号码,和 Excel 里的一位一位地对,别整体扫一眼。最容易错的是形近数字:1706/83856
  2. 重点看出生日期段(第 7~14 位)。 这 8 位是 YYYYMMDD,本身就有规律:月份只能 0112、日只能 0131。若出现 13 月、00 日、32 日,一眼就能揪出。
  3. 再看末位校验码(第 18 位)。 如果前 17 位和底册完全一致,那就是末位填错了——用第三节的算法重算一遍,把末位改成算出来的正确值。常见错误是本该是 X 却写了 0 或漏填。
  4. 实在找不出,用算法反推缩小范围。 按第三节手算一遍加权总和,若你的总和和「正确号码应有的总和」差一个小数(比如差 6),说明很可能是某一位数字被写大 / 写小了对应的量,结合加权因子能进一步缩小到哪几位可疑。这一步偏进阶,日常做到第 1~3 步基本就能定位。

核对时切记:举例、测试一律用虚构占位号(如 11010119900307XXXX、化名「张三/李四」),真实公民身份证号属个人敏感信息,不要贴到聊天、截图或任何外部文档里。

五、预防清单:批量填报前过一遍

  • 身份证列固定设为「文本」格式再录入,从源头杜绝科学计数截断(这是「校验不通过」最大的一类来源,详见科学计数篇)。
  • 录完抽查几条:号码 18 位、左对齐、末位与底册一致、X 为大写。
  • 别手动补 / 改末位校验码:如果你不确定末位,宁可回底册核实原号,也别自己「猜」一位填上——猜错照样过不了校验。
  • 统一 x/X 大小写,避免同一个人因大小写被当成两条记录(参见身份证号重复)。
  • 一份干净、格式正确的名册模板存档复用,别每次从零新建。

六、顺带一句:让工具在导入前就把错号挑出来

**报数侠·公务员信息填报助手,专为批量快速填报全国公务员管理信息系统而生。**它把系统数据导出到 Excel,批量修改、校验后再导回;导入前会提示身份证位数、校验位和 Excel 精度截断等问题。

获取与试用:baoshuxia.com。人员数据在本机处理、不上传,联网仅用于授权、版本检查与支付;更多导入步骤见批量导入全流程


本文由第三方民间站点整理,仅作填报参考。「全国公务员管理信息系统」为官方系统,本站与其无隶属、授权或合作关系;报数侠为独立第三方辅助工具,不冒充官方、不分发任何官方安装包。密码重置、系统下载等请咨询本单位信息管理员或上级组织部门。文中号码、姓名均为虚构示例,请勿使用真实公民个人信息。

逐人逐字段手工录入,太耗时?

报数侠·公务员信息填报助手能把整理好的 Excel 批量导入系统、顺带做字段与单位校验,把机械的录入活省下来。工具仅帮你省手工,系统本体与权威填报口径仍以官方为准。

了解报数侠 →