身份证校验码测试数据开发验证

测试身份证号码生成与校验规则详解

Mariana Costa

作者: Mariana Costa· Especialista em Ferramentas

·1 分钟阅读

测试身份证号码生成与校验规则详解

开发注册、实名认证或数据导入功能时,不应把真实个人身份证号复制到测试环境。UtilWave身份证号生成器会创建符合18位结构和校验码规则的虚构测试号码,供表单、解析器和自动化测试使用。

这些号码不对应真实个人,也不代表公安机关登记记录。工具当前使用省级行政区代码,后四位为0000,不会声称生成了具体市县的真实地址代码。

18位号码结构

| 位置 | 长度 | 内容 | 测试重点 | | --- | ---: | --- | --- | | 1至6位 | 6 | 行政区划代码 | 长度、数字和地区前缀 | | 7至14位 | 8 | 出生日期YYYYMMDD | 日期解析和范围 | | 15至17位 | 3 | 顺序码 | 奇偶与性别解析 | | 第18位 | 1 | 校验码 | 0至9或X |

例如,一个结构化测试值可以拆分为110000、出生日期、顺序码和最后的校验字符。结构正确不等于号码已经签发。

地区码如何生成

本工具从中国大陆省级行政区前两位代码中随机选择,例如北京11、上海31、广东44和四川51,再使用0000表示省级占位。

这样做有两个目的:

如果系统必须校验到具体市、区或县,应接入一份有版本和更新时间的行政区划数据,不能仅依靠随机生成器。

出生日期和顺序码

第7至14位使用YYYYMMDD格式。测试时不仅要检查八位数字,还要验证月份、日期和闰年,例如20230229不应被当作真实日期。

第17位通常用于性别解析:奇数常被解释为男性,偶数常被解释为女性。生成器会创建三位顺序码,但不会为虚构号码绑定真实姓名、住址或个人档案。

校验码计算

最后一位不是任意字符。前17位分别乘以固定权重:

7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2

将乘积求和后取模,再映射为0-9X。生成器按照常用的MOD 11-2规则计算这一位,因此可以测试校验函数的正确路径。

要测试错误路径,可以复制一个生成值,手动修改中间一位数字而不更新末位校验码。

如何使用测试生成器

  1. 打开身份证号生成器
  2. 选择1至50的生成数量。
  3. 点击生成。
  4. 复制单个号码或整个列表。
  5. 在开发、QA或演示环境中使用。

如需检查已有输入的结构和校验位,可以使用身份证号验证器。验证器只能判断规则是否通过,不能确认号码是否由官方签发。

建议的测试用例

常见问题

生成的号码是真的吗?

不是。它们仅用于软件测试,不对应真实个人。

为什么地区码后四位是0000?

当前工具使用省级行政区代码,避免伪装成具体市县的真实地址数据。

通过校验码就代表有效身份吗?

不是。校验码正确只证明数学结构一致,不能证明号码已签发或属于某个人。

数据会上传吗?

不会。号码生成和校验码计算在浏览器中完成。

可以用于实名认证吗?

不可以。实名认证必须使用合法的官方流程和真实用户授权数据。

相关工具

身份证号生成器

免费访问,无需注册。

相关文章