数据脱敏

一行一条数据,把手机号、身份证、邮箱、银行卡、IP、姓名里的关键部分替换成 * 或 #,用于日志、工单、截图和测试数据。

数据不会离开这台设备 脱敏全程在页面里用 JavaScript 完成,没有请求、没有接口、没有存储。你可以断网使用,也可以按 F12 打开 Network 面板,一边粘贴一边确认没有任何请求发出。
输入(一行一条)
输出

      

默认脱敏规则

每种类型都有一套默认的保留位数,直接粘贴就能用;需要更严格或更宽松时,在选项里填「保留前 N 位」「保留后 N 位」覆盖它,留空表示用默认值。

类型默认保留示例
手机号前 3 位、后 4 位13800138000 → 138****8000
身份证前 6 位、后 4 位110101199003078515 → 110101********8515
邮箱名称前 1 位,域名不动zhangsan@example.com → z*******@example.com
银行卡前 4 位、后 4 位6222021234567890 → 6222********7890
IP 地址保留前 2 段192.168.1.100 → 192.168.*.*
姓名保留姓张三 → 张*

脱敏是不可逆的:被替换掉的字符直接丢弃,工具不保存原文,也没法从结果还原。需要核对身份时请保留足够位数(比如手机号留前 3 后 4 就能看出归属地),但留得越多,被枚举出来就越容易。

为什么日志和截图里必须脱敏

用户数据出现在比想象中更多的地方:接口日志、异常堆栈、抓包记录、工单截图、客服聊天记录、演示环境和测试账号。手机号和身份证号属于个人信息,一旦落进日志平台、告警群或工单系统,就会被复制到好几个地方,事后清理的成本远高于写入前遮一下。

截图是另一个高频泄漏点:截图里常常同时出现真实号码、内部域名和账号名,发到群里之后就再也收不回来了。写日志时脱敏、发截图前把要粘贴的几行先过一遍这个工具,是最省事的两个习惯。测试数据同理——用真实生产数据做测试,等于把泄漏面扩大了一倍。

批量处理与自动识别

输入支持整列粘贴:一行一条,空行原样保留。默认的「自动识别」按下面的顺序判断每一行:邮箱 → IPv4 → 18 位且校验位正确的身份证 → 15 位身份证 → 16 至 19 位数字(银行卡)→ 7 至 14 位数字(手机号 / 电话,会剥掉 +86 前缀和空格短横线)→ 2 到 4 个汉字(姓名,也认「·」分隔的少数民族姓名)。识别顺序是固定的,所以结果可预测、可复核。

识别不了的行,在默认开启的「严格模式」下会直接报错并指出行号,整批都不会输出。这是故意的:脱敏工具最怕的就是悄悄漏掉一行,把真实数据原样带出去。如果输入里本来就有表头或说明文字,取消勾选严格模式,这些行会原样保留(它们也就不会被脱敏,请自己确认没有泄漏)。

常见问题

位数不够会怎么样,比如 8 位手机号?
保留位数会自动收窄,保证至少遮住 1 位。8 位数字按默认「前 3 后 4」会遮住中间 1 位,只剩 1 个星号,显然不够安全——这时把「保留后 N 位」填 0,就只剩前 3 位可见。位数越少,越应该手动收紧保留位数。
自动识别会把银行卡认成身份证吗?
18 位纯数字两种都有可能,所以工具用身份证的 ISO 7064 校验位来判断:校验通过按身份证处理,不通过按银行卡处理。手工编造的测试号码通常过不了校验,会被当成银行卡,这时请手动指定类型。
脱敏后的数据能还原吗?
不能。这是替换式脱敏,遮住的字符已经被丢弃,输出里不含任何可用于还原的信息。也正因为不可逆,不要拿输出去做需要真实号码的联调。
脱敏字符用 * 还是 #?
只是显示习惯,占位长度完全一样。写 Markdown、放进 URL 或命令行时 # 不需要转义,会省一点事;其余场景选哪个都行。
这些数据会被上传吗?
不会。页面没有任何上传逻辑,也没有把内容写进本地存储。断网照样能用,F12 的 Network 面板里可以自己确认。页面底部那条「不上传」的说明就是给这件事做背书的。

相关工具

中文转义中文与 Unicode 转义、HTML 实体、URL 编码互转 URL 编解码encodeURIComponent 与 encodeURI 两种模式 文本处理去重、排序、去空行、加行号