开发注册、实名认证或数据导入功能时,不应把真实个人身份证号复制到测试环境。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-9或X。生成器按照常用的MOD 11-2规则计算这一位,因此可以测试校验函数的正确路径。
要测试错误路径,可以复制一个生成值,手动修改中间一位数字而不更新末位校验码。
如何使用测试生成器
- 打开身份证号生成器。
- 选择1至50的生成数量。
- 点击生成。
- 复制单个号码或整个列表。
- 在开发、QA或演示环境中使用。
如需检查已有输入的结构和校验位,可以使用身份证号验证器。验证器只能判断规则是否通过,不能确认号码是否由官方签发。
建议的测试用例
- 一个生成器输出的18位值。
- 末位为
X的值。 - 不存在的月份或日期。
- 少于或多于18位。
- 小写
x,测试系统是否规范化。 - 修改一位后校验码失效的号码。
- 含空格、连字符或其他非数字字符的输入。
- 旧版15位格式,如果业务仍需要兼容。
常见问题
生成的号码是真的吗?
不是。它们仅用于软件测试,不对应真实个人。
为什么地区码后四位是0000?
当前工具使用省级行政区代码,避免伪装成具体市县的真实地址数据。
通过校验码就代表有效身份吗?
不是。校验码正确只证明数学结构一致,不能证明号码已签发或属于某个人。
数据会上传吗?
不会。号码生成和校验码计算在浏览器中完成。
可以用于实名认证吗?
不可以。实名认证必须使用合法的官方流程和真实用户授权数据。
