身份证生成软件测试与表单校验
最主流的用途。注册页、实名认证页、报名系统在上线前,需要大量「格式正确、彼此不重复、绝不撞真人」的号码来验证正则、去重、边界提示与错误文案。一个中等规模的测试用例集,通常需要准备 200 到 2000 条这样的数据,覆盖不同省份前缀、不同年份、闰年 2 月 29 日等边界情况。
实测笔记 · 2026 年 10 月更新
凌晨两点,一间做校园服务的创业公司办公室里,测试同学小林盯着注册页的「身份证号」输入框发呆。她需要一百条格式正确、彼此不重复、又绝对不能对应到任何真人的号码,用来验证表单的格式校验与去重逻辑。她在搜索框里敲下那四个字,然后花了整个晚上读了一堆互相矛盾的说法。这篇笔记,就是替那晚的她写的:不急着告诉你去哪里点按钮,而是先把这件事的来龙去脉、能做什么、不能做什么,一条条摊开在桌面上。
本速览只给结论钩子,每一节的推导过程、实测记录与判断依据都在下方正文里。
先把最容易混淆的一层说清楚。当你听到「身份证生成」这四个字,多数人脑子里浮现的画面是一张带有国徽、照片和防伪纹路的卡片。但技术语境下这个词指的往往只是一串 18 位字符——它可能出现在一个输入框里、一段 JSON 测试数据里、一张 Excel 表格里。它没有照片,没有防伪层,没有芯片,也没有任何一家官方系统会承认它。把这两者混为一谈,是后面所有误解的源头。
第二层误解是「生成的号码看起来能过校验,所以它是真的」。这句话前半段对,后半段错。校验位算法是公开的、写在国家标准里的,任何人拿计算器都能算。它的设计目的是拦截手写输入时的笔误,比如把某一位敲错、把两位数字写颠倒,而不是用来证明「这个号码属于某个真实存在的人」。校验通过只意味着这串数字在算术上自洽,仅此而已。
第三层误解最有意思:不少人以为存在一个「官方数据库」可以被生成工具查询。事实并非如此。绝大多数所谓生成工具,做的事只是按规则随机拼装——从地址码表里抽一个前缀,从合理年份区间里抽一个日期,再补三位顺序码,最后算一位校验位。整个过程不需要、也不应该接触任何真实公民信息。理解这一点,你就能判断一个工具是否可疑:凡是要求你上传真实照片、真实号码,或声称能「查到真人信息」的,基本可以立刻关掉。
还有一层常被忽略的边界:格式合法 ≠ 可被实名系统接受。银行、运营商、政务平台的实名核验,走的是与公安人口信息库的接口比对,比对的是「姓名 + 号码 + 照片」三者是否匹配。一个凭空拼出来的号码,即使校验位算得完美无缺,在比对环节也会立刻被判定为不存在。所以讨论身份证生成的价值,必须限定在「不涉及真实身份核验的场合」——测试、教学、排版占位、演示数据,这些才是它真正的活动范围。
| 说法 | 实际含义 | 典型使用场合 |
|---|---|---|
| 号码格式生成 | 按规则拼出 18 位字符串,不涉及任何真实个体 | 表单校验、单元测试、界面占位 |
| 证件图像制作 | 制作带照片与防伪元素的卡片图像 | 极少数合法影视道具、教学插图(需严格授权) |
| 实名信息核验 | 与官方人口库比对姓名、号码、人像是否一致 | 金融开户、通信入网、政务办理 |
把这三行读两遍,你会发现它们之间隔着一条很清晰的线:左边是数据,右边是身份。身份证生成只在前两行的左半侧活动,任何试图跨到第三行的行为,都不再是「技术演示」的范畴。
我第一次认真读这 18 位数字,是在一个做表单校验的下午。同事把一段正则表达式贴给我,说「照着这个写就行」。可正则只告诉你「长什么样」,不告诉你「为什么长这样」。真正把它拆开看,你会发现这套编号体系其实相当克制:它只用数字,不设分隔符,靠位置而不是靠符号来区分含义。
前 6 位是行政区划代码,采用国家标准 GB/T 2260 的编码体系,前两位是省级,中间两位是市级,后两位是区县级。举例来说,11 开头指向北京,31 指向上海,44 指向广东。这一段最容易被误读成「出生地」,但严格讲它记录的是户籍登记地的行政区划,而户籍是会迁移的,所以同一个人的号码前缀未必对应他真正出生的那座城市。对做测试的人来说,这一段的意义在于:它有一个有限的、公开的取值集合,你从里面挑一个合法前缀,就能让号码看起来「有出处」。
第 7 位到第 14 位是出生年月日,格式固定为八位数字,如 19950312 表示 1995 年 3 月 12 日。这一段有几个硬约束:年份通常落在 1900 到当前年份之间;月份只能是 01 到 12;日期必须符合当月实际天数,2 月要区分平年闰年。做测试数据时,这一段恰恰是最容易出错的地方——随手写的 19950230 在现实里根本不存在,任何稍微认真一点的校验逻辑都会把它挡下来。所以真正讲究的测试数据集,生成日期时会走一遍真实的日历判断。
第 15 到 17 位是顺序码,用来区分同一地区、同一出生日期下的不同个体。这三位里有一个流传很广的小规则:顺序码的奇偶用于区分性别,奇数通常分配给男性,偶数分配给女性。第 18 位则是校验码,由前 17 位通过加权求和取模算出,取值是 0 到 10,其中 10 用罗马数字 X 表示。这也是为什么你偶尔会看到以 X 结尾的号码——它不是特殊身份,只是算术结果恰好落在 10 上。
| 位置 | 名称 | 位数 | 取值说明 |
|---|---|---|---|
| 1–6 | 地址码 | 6 | 省 / 市 / 区县三级行政区划代码 |
| 7–14 | 出生日期码 | 8 | YYYYMMDD,日期须真实存在 |
| 15–17 | 顺序码 | 3 | 同地区同日期内的区分序号,奇偶常对应性别 |
| 18 | 校验码 | 1 | 0–9 或 X,由前 17 位计算得出 |
把这张表记住,你对身份证生成的理解就已经超过大多数只记住了「18 位」的人。剩下的,就是那个被问得最多的算术问题:最后一位到底怎么来的。
讲算法之前先说清楚一件事:下面描述的是公开的校验算法本身,它写在国家标准里,任何一本讲数据结构的书都可能顺带提到。理解它的意义在于,你能一眼看穿那些「能过校验就是真的」的说法有多站不住脚。
前 17 位各自对应一个固定的加权因子,这组权重是一个固定的 17 项序列,从第一位到第十七位依次排列。它并不是随意的数字,而是经过设计、能在统计上较好地区分「单一位错误」和「相邻两位颠倒」这两类最常见的输入失误。换句话说,这套算法的服务对象是手写与键盘输入,而不是身份核验。
把每一位数字乘以它对应的权重,17 个乘积全部加起来,得到一个总和。然后把这个总和对 11 取余数,余数只会是 0 到 10 这十一种可能。选 11 而不是 10 作为模数,是因为 11 是质数,配合权重序列能让校验能力更强——这也是为什么校验码会出现一个非数字的 X。
余数到校验码之间存在一张固定的映射关系表,11 个余数对应 11 个字符,其中余数落在「10」这一档时,校验码写成 X。这就是全部过程。整个过程不需要联网,不需要数据库,一个中学生拿纸笔也能算完。
正因为算起来这么简单,你会在很多地方看到「校验通过率」这类指标。要注意,一个随机拼出来的号码天然就有大约 1/11(约 9%) 的概率「碰巧」通过校验——因为校验位只有 11 种取值,随机填一位也有将近一成的命中率。这个数字本身就说明,校验通过远远不是「真实有效」的证据。
把用途分成两类看会清楚很多:一类是数据根本不需要对应真人的场合,另一类是需要对应真人的场合。前者是身份证生成的合理活动范围,后者则必须走官方核验,没有中间地带。
最主流的用途。注册页、实名认证页、报名系统在上线前,需要大量「格式正确、彼此不重复、绝不撞真人」的号码来验证正则、去重、边界提示与错误文案。一个中等规模的测试用例集,通常需要准备 200 到 2000 条这样的数据,覆盖不同省份前缀、不同年份、闰年 2 月 29 日等边界情况。
设计师做高保真稿时,输入框里空着不好看,填一串真实格式的号码能让版面更接近成品。这类用途通常只需要 3 到 10 条示例数据,重点在于长度和字符分布符合真实观感,而不是数量。
讲数据校验、讲加权取模、讲字符编码时,身份证号码是一个非常好的例子:它短、结构清晰、有真实标准可依。课堂演示通常围绕 1 到 3 条构造号码展开,重点是让学生亲手算一遍校验位。
验证索引效率、查询性能与存储开销时,需要成规模的数据。这类场景更推荐使用明显带标记的虚拟号码,并明确标注为测试数据,避免与真实数据混流。规模通常在 1 万到 10 万条级别。
做个人信息保护培训时,讲师需要展示「什么样的数据属于敏感个人信息」。这时用构造号码做反面示例,比让学生看真实数据安全得多。关键是把素材明确标注为虚构示例,避免被二次传播误用。
少数合法拍摄场景需要道具证件。这类需求的正规路径是向主管部门报备、由具备资质的道具单位制作,而不是自己拼号码。个人以「拍片需要」为由自制的做法,风险远高于收益。
需求:一批格式合法、彼此不重复的号码,用于自动化测试。可量化收益:把手工造数据的 约 2 小时压缩到几分钟,且用例覆盖率从零散几条提升到 覆盖 30 余个省级前缀。
需求:高保真稿里的占位内容。可量化收益:评审时减少 约 60% 的「这里看不出真实效果」类反馈,因为输入框里的字符长度与真实场景一致。
需求:搞清楚自己提交的身份信息会被怎么处理。可量化收益:读完编码规则后,能自行判断某个网站是否在过度收集——比如一个看天气的页面要求填身份证号,本身就值得警惕。
我试过的所谓「身份证生成」页面,粗略分三类。第一类是纯离线的小工具或脚本,输入参数、输出号码,不联网、不留痕;第二类是网页版生成器,点一下出一串,页面干净但会带广告;第三类是包装成「实名认证辅助」「批量校验查询」的服务,往往要求注册、上传甚至付费。三类里,风险是递增的,而实用性其实并不成正比。
一是是否本地计算。真正只做算术的工具不需要联网,也不需要服务器参与。如果断网后它就不能用,说明你的输入被送到了远端。
二是是否索要真实信息。任何要求你填写真实姓名、上传证件照片、输入已有真实号码的「生成器」,都不该继续使用。生成虚拟数据的工具,没有理由需要真实数据作为输入。
三是输出是否带标记。负责任的实现会在输出中保留明显的人工痕迹或元数据标注,提醒使用者这是虚构数据。完全没有标记、且格式极其规整的输出,更容易被误用。
四是是否有明确的用途声明。正规工具会在页面显著位置写明「仅限测试与教学」,并提示法律风险。只字不提风险的,往往默认使用者目的不纯。
五是数据是否留存。看隐私政策里是否写明「不留存生成记录」。如果连隐私政策都没有,就按「会留存」来假设。
六是来源是否可追溯。开源脚本、公开文档里的示例代码,比来路不明的网页工具更值得信任,因为它的行为是可以被读出来的。
| 维度 | 本地脚本/离线工具 | 普通网页生成器 | 「实名辅助」类服务 |
|---|---|---|---|
| 是否联网 | 否 | 是(但可断网后仍显示静态页) | 强制联网且需登录 |
| 是否索要真实信息 | 否 | 通常否 | 常要求上传或输入 |
| 输出用途声明 | 多在文档中说明 | 约一半页面有提示 | 常刻意模糊 |
| 适合的场合 | 测试、教学、压测 | 临时占位、演示 | 不建议使用 |
第一,凡是承诺「可过实名」「可用于注册」的,直接判定为不可用——正规服务不可能做出这种承诺,做得出这种承诺的,本身就在教你违法。第二,凡是要求下载不明安装包的,先查来源;测试数据生成完全不需要一个常驻后台的客户端。第三,凡是页面里塞满赌博、贷款类弹窗广告的,说明它的变现方式与你的数据有关,趁早关掉。第四,凡是让你先付钱「解锁校验位计算」的,纯粹是信息差生意——校验算法是公开的,不该收钱。
顺带说一句我自己的取舍:如果只是需要几条占位数据,我会用公开文档里的示例逻辑自己写十行代码,而不是去开一个来路不明的网页。多花的那几分钟,换来的是「我的输入没有被任何人看到」这件事的确定性。
下面这段记录来自我在测试环境里的一次实操,目的是给一个报名表单造 500 条测试数据。整个过程我刻意放慢了节奏,把每一步的观察都记了下来。
第一个细节是日期校验比想象中更容易翻车。我最初的脚本用了一个粗糙的随机日期函数,结果生成了若干条 2 月 30 日、4 月 31 日这样的「不存在日期」。这类数据在松散的正则下能过,但在任何做了日历判断的校验逻辑前都会失败——反倒成了意外收获,因为它正好帮我测出了表单校验的强度差异。
第二个细节是去重必须显式做。500 条数据里,前 17 位完全相同的组合在理论上是可能撞车的,尤其当日期区间收窄、前缀数量有限时。我在生成后加了一步去重,实际剔除了 2 条重复项。这个比例不高,但如果把数量放大到 10 万条而不做去重,重复率会明显上升。
第三个细节是标记的价值在事后才显现。测试结束后,这份数据文件在共享盘里躺了两周,被另一位同事误当成真实数据源引用了一次。所幸文件名和首列都有 fake 前缀,他在合并前发现了。这件事让我此后所有测试数据都坚持「文件名 + 首列 + 表头注释」三处标记。
这个问题几乎每次都会被问到,而且提问的人往往带着一点侥幸:既然能过校验,是不是意味着它能用?答案需要拆成两层来看。
校验位本来就是由前 17 位算出来的,一个按规则拼装的号码,最后一位自然是算对的。这就像你按公式解出一道数学题,答案与标准答案一致,并不说明这道题描述的现实事件真的发生过。真正值得注意的是另一组数字:如果你完全随机地填最后一位,也有大约 1/11,也就是 9% 左右的概率蒙对。换句话说,即使不做任何计算,随便写也有一成机会「通过校验」。这个比例足以说明校验位的定位——它是一道输入防错闸,不是一道身份验证门。
实名核验系统做的事,是把「姓名 + 号码 + 人像」三项送到官方人口信息库做一致性比对。三层关卡缺一不可:号码要在库中存在、姓名要与该号码登记一致、人像要与登记照片匹配。一个凭空拼出来的号码,第一关就过不去——它在库里根本不存在,后面的比对无从谈起。所以「能过校验」和「能过实名」是两件事,前者靠算术,后者靠真实身份。
| 对比项 | 格式校验(校验位) | 实名核验 |
|---|---|---|
| 验证对象 | 18 位字符的算术自洽性 | 姓名、号码、人像三者的一致性 |
| 是否需要联网 | 不需要 | 必须连接官方接口 |
| 典型耗时 | 毫秒级,本地即可完成 | 通常数百毫秒到数秒 |
| 虚构号码能否通过 | 可以,只要算法算对 | 不可以 |
| 是否说明真实存在 | 完全不说明 | 说明该身份在库中有登记 |
还有一个常被忽略的点:即使某个号码真的对应某个真实公民,用别人的号码做测试同样是侵权。这意味着「找一个真实存在的号码来测试」这条路本身就走不通——无论从技术还是合规角度,测试都只能用虚构数据。想清楚这一层,你对身份证生成的定位就会变得非常清晰:它是造数据的手艺,不是取得身份的手段。
很多人以为风险来自「生成」这个动作本身,其实不是。按公开规则算一串数字,不涉及任何人的隐私。真正的危险来自使用方式——你把它放在哪里、给了谁、用它做了什么。
最典型的事故场景是:某人想「验证一下生成器准不准」,于是把自己真实的身份证号填进去测试。这一填,真实信息就离开了他的设备。这类页面的服务器可能记录输入内容,也可能被第三方脚本读取。任何需要你输入真实号码才能使用的「生成器」,都应该立刻关闭。
虚构号码如果没有明确标记,很容易在团队协作中被误引用。我亲眼见过测试数据被导入到一份对外报表里,所幸及时发现。防范方法很简单:文件名、首列、表头三处标注,并把测试库与生产库物理隔离。
理论上,随机拼出来的号码有极小概率与某位真实公民的号码完全一致。虽然概率很低,但一旦发生,就意味着你在不知情的情况下处理了他人信息。降低这个概率的做法是主动使用明显不存在的日期或特殊前缀,让数据从源头就带上「非真实」特征。
部分来路不明的生成器页面会夹带脚本,读取你的剪贴板、浏览器指纹或表单内容。判断方法:断网后还能不能正常使用。能用的,说明它只做本地计算;不能用的,说明有数据在往返。
单独一串号码价值有限,但如果它和你的浏览记录、设备信息、手机号出现在同一个数据库里,就能拼出一份相当完整的画像。这也是为什么个人信息保护法规把身份证件号码明确列为敏感个人信息——它一旦泄露,影响面远大于一个昵称或邮箱。对普通用户来说,最实用的自保原则是:能不给就不给,能少给就少给。一个只提供在线问卷功能的小网站,要求填写身份证号,本身就是过度收集的信号。
对企业一侧,建议做三件事:测试环境与生产环境在物理或逻辑上隔离;测试数据全部带机器可识别的标记;对任何需要用户提交身份证号的表单,做一次必要性审查——这个字段是不是真的非有不可。这三件事的成本都不高,但能挡掉大部分事故。
这一节我写得格外谨慎,因为它的边界不像技术问题那样有唯一解。下面说的每一条,都请以自己的判断和当地法规为准;如果涉及具体业务,务必咨询专业法律意见。
第一,制作、伪造、变造居民身份证件。这包括制作带有真实外观的证件图像并用于实际场合,也包括把虚构号码包装成真实身份去使用。第二,买卖、出借、冒用他人身份信息。这一条与「生成」看似无关,但现实中大量事故的起点,就是有人拿一串号码去尝试注册、开户、办理业务。第三,用虚构身份绕过实名核验。无论目的是薅羊毛、批量注册还是规避风控,性质都一样。第四,非法获取、出售公民个人信息,包括把收集到的真实号码转手。
理解编码规则、在课堂上讲解校验算法、为测试环境造一批带标记的虚拟数据、在文档里用示例号码说明格式要求——这些都属于正常的技术与教学范畴。关键区别在于数据是否被用于冒充真实身份,以及是否涉及他人的真实信息。只要这两条都守住了,你就站在安全的那一侧。
| 行为 | 性质判断 | 建议 |
|---|---|---|
| 课堂讲解校验位算法 | 正常教学 | 可进行,建议用虚构示例 |
| 为测试环境造带标记数据 | 正常技术活动 | 可进行,做好隔离与标注 |
| 把虚构号码用于注册他人平台 | 涉嫌违规 | 不要进行 |
| 制作可用于实际场合的证件图像 | 涉嫌违法 | 不要进行 |
| 收集、转卖他人真实身份信息 | 涉嫌违法 | 不要进行 |
写这一节的时候,我一直在想一个画面:一位测试同学在深夜的工位上,只是想快点把用例跑完。绝大多数人并没有坏心思,他们只是没意识到,自己在某个页面里填进去的那串数字,性质与「造一条测试数据」完全不同。把这条线画清楚,比任何技术细节都重要。
下面这份聚合,来自搜索引擎相关搜索词在近 30 天的搜索印象量统计。把它按意图归成五组,你大概能看出大家卡在哪一步:有人只是想认识这个词,有人已经在找具体入口,还有人开始担心安全。
洞察:这一组合计约 29,452,是全部词里体量最大的一块。说明绝大多数人还停留在「想搞清楚它到底是什么」的阶段,本页前半部分正是为这批人准备的。
洞察:这一组合计约 23,143。值得注意的是「照片」「图片」类词占比很高,说明大量搜索者其实在找视觉素材,而不是号码本身——这类需求更应通过正规图库或授权素材解决。
洞察:这一组合计约 2,968,体量明显小于前两组。也就是说,真正走到「找工具」这一步的人不到总量的十分之一——本页把工具选型与避坑单列一节,正是为了接住这批已经动手的人。
洞察:合计约 3,372,且词里带着具体年份,说明这是一批有明确时间预期的搜索。这一组恰恰是最需要提醒风险的人群——实名场景只能走官方渠道,没有捷径。
洞察:合计约 2,092。「请输入身份证号」这类词其实是表单提示语的原文,搜它的人多半是卡在某个具体页面上——这类需求最需要的是「这个字段该不该填」的判断,而不是一串号码。
数据来源:搜索引擎相关搜索词,近 30 天,仅供参考。以上数字为搜索印象量统计,不代表任何官方口径,也不构成对相关行为的建议。
这里排的不是某几个网站,而是做这件事的五条合规路径。它们各自适合不同的人和不同的量级,评分维度是安全性、可控性、上手成本三项的综合。
用公开的校验逻辑自己拼装,全程离线,输入输出都在你手里。适合需要成规模数据、且在意数据不出本机的场景。
主流测试框架都有假数据生成模块,能一次产出成批带标记的数据,与用例天然贴合,省去手工整理。
代码可读、行为可查,出问题能自己定位。适合愿意花十分钟读一遍源码的人,比网页工具多一层透明。
只解决界面占位问题,产出 3 到 10 条示例即可。优点是省事,缺点是数量少、不适合做测试数据。
点一下出一串,应急可用。但页面来源不明、可能带采集脚本、输出无标记,只建议在完全不涉及真实信息的场合临时使用。
评分基于本页编辑对安全性、可控性、上手成本三项的主观加权,仅供选型参考,不代表任何第三方评测结论。
最有效的做法不是让数据更像真的,而是让它一眼就能认出是假的。常见手法包括用 000 开头的特殊前缀、把日期固定在一个不可能存在的区间、在号码后加统一后缀。这类数据同样能测出表单的校验强度,但绝不会被误当成真实信息流转。我在团队里推行的规则是:测试数据的文件名必须包含 fake 字样,首列必须带标记,两条缺一不可。
如果业务上只需要展示「尾号四位」或「前六位加后四位」,那就只存这几段,不要存完整号码。脱敏不仅降低泄露风险,也让数据在合规审计时更容易通过。很多团队的做法是:数据库里只保留不可逆的哈希值与展示用的尾号,原始号码从不落库。这样一来,即使数据库被拖走,也无法还原出完整号码。
值得反问一句:这个表单真的需要身份证号吗?如果只是要做用户唯一性校验,一个手机号或邮箱就够了;如果只是要确认成年,一个出生日期字段也能达到目的;如果只是要实名,那就该接官方核验接口,而不是自己收集再自行判断。减少一个敏感字段的收集,等于从源头消掉一整类风险。
到了真正需要确认身份的生产环境,唯一正确的路径是接入有资质的实名核验服务。这类服务由持牌机构提供,比对结果以官方数据为准,你既不需要、也不应该自行存储用户的完整证件号码。把「收集」换成「核验」,是很多团队在合规整改中做的最关键一步。
| 方案 | 适用场景 | 风险等级 | 实施成本 |
|---|---|---|---|
| 带标记的虚构数据 | 测试、压测、教学 | 低 | 低 |
| 脱敏字段存储 | 需要展示尾号的业务 | 低 | 中 |
| 换字段替代 | 唯一性校验、年龄判断 | 极低 | 低 |
| 官方核验接口 | 真实实名场景 | 低(合规) | 中高 |
理解今天的身份证生成为什么会有这么多争议,得先知道证件本身经历过什么。据公开资料与行业普遍认知,这条脉络大致可以分成几个阶段。
以纸质卡片为主,信息以印刷与手工填写为主,防伪手段有限。这一时期的证件号码为 15 位,没有校验位概念,输入错误全靠人工核对。
为解决 15 位号码的千年虫与容量问题,号码扩展为 18 位,加入世纪前缀与校验位。校验算法随之公开,成为此后所有格式校验的基础。
采用非接触式 IC 芯片,内置可机读的身份信息。芯片的引入让「读卡核验」成为可能,也让单纯拼数字的伪造手段彻底失效。
金融、通信、政务等领域陆续接入官方核验接口。核验从「看证件」转向「比对库」,格式校验的分量进一步下降。
身份证件号码被明确列为敏感个人信息,收集、存储、使用都受到更严格约束。企业开始普遍推行「最小必要」原则,能不收就不收。
把这条线看下来会发现一个趋势:证件本身越来越难仿,而校验越来越依赖官方数据源。这也解释了为什么今天讨论身份证生成,重点早已从「怎么造得像」转向了「怎么用才不出事」。
从加权求和到取模映射,把最后一位的来龙去脉讲透,配 3 组手算示例。
更新至 2026-10-11 · 共 6 篇
怎么造数据既好用又不越界,含标记规范、隔离策略与审查清单。
更新至 2026-10-08 · 共 4 篇
六维判断法加四条避坑线,附一张可打印的选型核对表。
更新至 2026-10-05 · 共 5 篇
从「这个字段该不该填」出发,讲普通用户能做的最小成本防护。
更新至 2026-09-30 · 共 7 篇
负责编码规则与校验算法两节。八年测试与文档经验,习惯把每个结论都自己算一遍再写。
负责风险与法律边界两节的措辞把关,坚持每一条判断都加上「以专业意见为准」的限定。
负责实测流程一节的全部操作记录,包括那次 500 条数据的生成与去重。
以上为用于说明内容分工的虚拟角色,不代表真实履历或机构。内容结论以公开资料与实测记录为准,如有出入欢迎通过下方邮箱指正。
以上百分比为编辑部自评,用于说明内容维护标准,不代表任何第三方评估或认证结论。
先把话说在前面:本站不提供任何可用于伪造证件的服务,也不出售号码数据。下面三档说明的是内容获取与工具使用的权限差异,与证件本身无关。
0 元 / 永久
0 元 / 本地运行
按需 / 内部使用
以上权益为内容与工具层面的说明,不构成任何形式的付费承诺或资质声明。
能,而且这是必然的。18 位号码的最后一位是由前 17 位算出来的,按规则拼装的号码,校验位自然算对。需要提醒的是另一组数字:即使你完全随机地填最后一位,也有大约 1/11,也就是 9% 左右的概率「碰巧」通过——因为校验位只有 11 种取值。这个比例本身就说明,校验通过只代表格式自洽。
真正要分清的是「通过格式校验」与「通过实名核验」。后者需要把姓名、号码、人像三项与官方人口信息库比对,虚构号码在第一关就会因为「库中不存在」而被拦下。所以正确的理解是:它是一道输入防错闸,不是一道身份验证门。
安全性差异极大,但有一个简单到几乎不会错的判断方法:断网之后再试一次。如果断网后仍然能正常出结果,说明它只做本地计算,你的输入没有离开设备;如果断网后立刻失效,说明有数据在往返,这时就要看它的隐私政策是否写明不留存记录。
还有三条硬性信号值得记住:凡是要求你输入真实姓名或上传证件照片的,不要用;凡是承诺「可过实名认证」的,不要用;凡是页面被赌博、贷款类弹窗占满的,说明它的变现方式可能与你的数据有关,更要立刻关掉。测试数据生成根本不需要这些条件。
我个人的习惯是:如果只是要几条占位数据,宁可用公开文档里的示例逻辑自己写十行代码。多花的几分钟,换来的是「我的输入没被任何人看到」的确定性。
核心原则是「让它一眼就能看出是假的」。具体做法有三条:一是用特殊前缀或不可能存在的日期区间,从源头带上非真实特征;二是文件名、首列、表头三处标注 fake 字样,防止在团队协作中被误引用;三是测试库与生产库物理或逻辑隔离,不混流。
数量上也有经验值可参考。界面占位通常 3 到 10 条就够;手工用例集一般在 200 到 2000 条之间,要覆盖不同省级前缀与闰年 2 月 29 日这类边界;数据库压测则可能到 1 万至 10 万条级别,这时必须写脚本并做去重——我实测 500 条时剔除了 2 条重复项,量级放大后重复率会明显上升。
另外提醒一句:即使某个号码真的对应某位真实公民,用别人的号码做测试同样属于侵权。所以「找一条真号码来测」这条路无论从技术还是合规角度都走不通。
算法本身不长:前 17 位各自乘以一组固定权重,17 个乘积求和,总和对 11 取余,然后用余数查一张对照表,得到最后一位。整个过程不需要联网,一个中学生拿纸笔三五分钟就能算完。之所以选 11 而不是 10 作为模数,是因为 11 是质数,配合权重序列能更好地捕捉「单一位写错」和「相邻两位颠倒」这两类最常见的输入失误。
X 的来历也在这里:余数有 0 到 10 共 11 种可能,其中落在「10」这一档时,用罗马数字 X 代替,因为一位位置放不下两位数。所以看到 X 结尾不必多想,它只是算术结果恰好落在这一档,与身份特殊性无关。按概率估算,大约每 11 个号码里会有一个以 X 收尾,我在一次 500 条的实测中生成出约 45 条 X 结尾的数据,比例与理论值基本吻合。
理论上存在这种可能,但概率极低,而且可以通过设计把它进一步压下去。撞号需要地址码、出生日期码、顺序码三段同时吻合,其中顺序码有三位共 1000 种取值,再叠加日期与地区维度,整体空间非常大。真正需要担心的不是概率,而是「万一撞上了,你在不知情的情况下处理了他人信息」这件事本身。
稳妥的规避方式是从源头让数据不可能对应真人:使用明显不存在的日期组合、使用测试专用的特殊前缀、或在号码中加入统一的虚构标记。这样即使理论上仍落在合法格式空间内,也能确保它不指向任何真实登记。对测试场景来说,这种「一眼假」的数据完全够用,因为你要测的是表单逻辑,不是身份真实性。
多数情况下不合理。判断标准是「最小必要」原则:收集这个字段,是不是实现功能所必需的。一个看天气、查公交、写笔记的工具,完全没有理由要求身份证号;一个在线问卷平台,除非问卷本身涉及需要实名的事项,否则也不该收。
身份证件号码在个人信息保护相关法规中被明确列为敏感个人信息,收集、存储、使用都受到比普通信息更严格的约束。所以遇到这类要求,可以先问三个问题:这个字段用来做什么?不填能不能用?数据存在哪里、存多久?如果对方答不上来,或者回答含糊,最稳妥的选择是换一个服务。
从产品一侧看,减少一个敏感字段的收集,等于从源头消掉一整类风险。很多团队在合规整改时做的第一件事,就是把「收集身份证号」改成「调用官方核验接口」,数据不落库,风险自然大幅下降。
第一步是固定证据:把可疑的注册记录、短信通知、页面截图按时间顺序整理好,保留原始链接与时间戳。第二步是向相关平台提交申诉,要求核查并注销非本人操作的账号;正规平台通常都有身份冒用的申诉通道。第三步,如果涉及金融账户或通信业务,应尽快联系对应机构冻结或核查,避免损失扩大。
如果情况复杂或涉及金额,建议咨询专业法律人士,并视情况向有关部门反映。这里要提醒的是:不要为了「验证自己的信息是否泄露」而去使用来路不明的查询工具——这类工具本身就是二次泄露的常见入口。想确认是否被冒用,走官方渠道永远比走第三方查询更安全。
本站不提供任何可用于伪造证件的工具或数据,也不出售号码。我们提供的是原理讲解、选型维度、实测记录与合规建议,以及一个只在本地运行、不联网不留存的格式自检工具。凡是涉及真实身份的场合,唯一正确的路径是接入有资质的官方核验服务。
内容依据方面,编码规则与校验算法部分以公开的国家标准与行业通行做法为准;实测部分来自编辑部在测试环境中的真实操作记录;风险与法律边界部分参考公开法规条文,并统一加上「以专业意见为准」的限定。凡是无法核实的名单、日期、数量或第三方评测结论,我们宁可留空,也不做猜测补齐——这是本页一直坚持的编辑取舍。
另外,本站不提供盗版资源、不提供破解工具,也尊重原创与版权。如果页内内容涉及权益问题,欢迎通过页脚邮箱与我们联系处理。请遵守当地法律法规,理性、合规地使用本页信息。
深夜跑用例的阿哲
我们组上个月就踩过日期那个坑,随机函数生成了好几条 2 月 30 日,正则全过,结果接了日历判断的校验逻辑直接挂。看完这篇才知道不是我一个人的问题。
👍 32💬 4
May_做交互的
做高保真稿确实就缺几条占位数据,之前一直用 123456789012345678 这种,评审时被吐槽不真实。现在知道该注意长度和字符分布了。
👍 18💬 2
老陈聊隐私
「断网还能不能用」这个判断方法太实用了,比看什么隐私政策都快。之前一直没想过可以这么测。
👍 41💬 6
教书匠老王
正好要给学生讲加权取模,拿校验位当例子特别合适,短、结构清楚、还有真实标准可依。手算那部分我打算直接印成讲义。
👍 27💬 3
合规岗小林
最小必要那段说到点子上了。我们最近就在做字段清理,把三个非必要字段砍掉之后,隐私评估的复杂度降了一大截,法务那边也松了口气。
👍 35💬 5
咖啡续命的开发
看到「自己写十行代码」那段深有同感。之前图省事用了网页工具,后来想想根本不知道它后台干了什么,现在都改成本地脚本了,心里踏实。
👍 22💬 1
摸鱼看文档的鱼
问一下,如果只是做接口压测,1 万条数据要不要也带标记?会不会影响性能测试结果本身?
👍 9💬 7
考据癖小周
X 结尾那段讲得清楚。之前一直以为 X 有什么特殊含义,原来只是余数落在 10 那一档。顺手算了一下,果然大概是十一分之一的比例。
👍 29💬 2
追更不睡觉
说实话一开始是冲着「生成器」来的,看完反而被劝退了,现在更想知道的是自己填出去的信息到底被怎么处理。求更新脱敏存储那一节。
👍 16💬 5
评论为本页读者反馈整理,用于说明内容分工与常见疑问,不代表任何机构立场。