“打个码再发”几乎是发图前的本能动作。但打码 ≠ 安全——马赛克和高斯模糊只是把信息”变换”了,不是”销毁”了,在特定条件下能被算法部分甚至完整还原。理解这一点,才能在真正敏感的场景里选对方式。
先理解一个词:可逆
把打码分成两类:
- 可逆变换——马赛克、高斯模糊。原信息经过一个确定的数学运算被”摊平”,但运算本身可逆向逼近。尤其当原内容的可能性有限时,攻击者可以”枚举候选 → 套用同样的打码 → 比对”,反推出原文。
- 不可逆销毁——纯色块。原像素被不透明颜色直接覆盖、彻底丢弃,导出文件里不再保留任何原始数据,没有可反推的对象。
一句话:马赛克和模糊是”藏”,纯色块是”删”。
为什么马赛克和模糊可能被还原
马赛克(像素化)把一块区域取颜色平均,变成若干大格子。问题在于——这个过程是确定且公开的。如果被遮的是一串身份证号,攻击者知道它只可能是数字 0-9 的排列,就能把候选号码用同一字体、同一格子大小渲染出来,逐块比对马赛克的平均色,匹配度最高的就是原文。2020 年公开的去像素化工具 Depix 正是用这个思路恢复像素化的截图文字。
高斯模糊更”脆”:它是一次线性卷积,理论上存在反卷积;半径较小时,去模糊算法和神经网络能把文字、人脸恢复到可辨认。
历史上也有惨痛的真实教训:某些用”漩涡/扭曲”滤镜遮挡人脸的图片,被执法机构用滤镜反向运算还原出原貌、据此锁定嫌疑人。这类滤镜和马赛克、模糊本质一样——只要是可逆变换,就有被反转的可能。
结论:对可枚举或可推测的内容(号码、文字、车牌、二维码),马赛克和模糊都不可靠。
纯色块为什么不可逆
纯色块用一个不透明颜色把目标区域整块覆盖。导出后,那块区域的每个像素都变成了同一个颜色值,原来的像素值不在文件里了。攻击者面对的是一片纯色,没有任何可供反推的残留信息——这才是真正的”销毁”。代价是观感生硬,但安全性换观感,关键信息上这笔买卖值得。
按内容选打码方式
| 被遮内容 | 推荐方式 | 原因 |
|---|---|---|
| 身份证号、银行卡号、手机号、车牌 | 纯色块 | 可枚举,马赛克/模糊会被候选攻击还原 |
| 密码、密钥、验证码、二维码 | 纯色块 | 同上,且二维码低强度打码可能仍可扫 |
| 人名、地址等文字 | 纯色块(或超大马赛克) | 已知字体可被去像素化 |
| 人脸 | 高强度马赛克 / 模糊可,敏感场景用纯色块 | 高熵内容,但存在再识别风险 |
| 背景、无关路人、品牌 | 马赛克 / 模糊 | 观感自然,非关键信息 |
打码之外,更容易翻车的五个地方
打码只处理了画面像素,但泄露往往发生在画面之外:
- EXIF / GPS 元数据——照片里可能藏着拍摄地点、设备、时间。打码不一定清除,发布前再用 exif-clean 清一遍。
- 原图还在——你分享的是打码版,原图却留在相册、聊天记录、云相册自动备份里,一次撤回不彻底就前功尽弃。
- 平台缓存原始版本——部分平台在你上传后会保留/缓存原图,处理务必在本地完成、只上传打好码的成品。
- 倒影与反光——眼镜、手机屏、镜子、玻璃幕墙里可能映出你以为遮住了的内容。
- 文件名和通知预览——文件名里带真名、截图时通知栏弹出的消息,都会连带暴露。
给打码强度一个底线
如果你确实只能用马赛克/模糊(比如要保留观感):
- 强度宁高勿低——糊到完全看不出笔画、轮廓、形状。
- 范围宁大勿小——把目标连同紧贴的边缘一起盖住,别只盖中间。
- 但只要内容是可枚举的结构化信息,再高的强度也别用马赛克,直接纯色块。
本工具的马赛克、高斯模糊、纯色块都在浏览器本地用 Canvas 完成、像素级写入,图片不上传。遮关键信息时记住一句话就够了:能枚举的内容,一律纯色块。