零宽字符隐写术
基于 U+200B / U+200C 的二进制信息隐藏方案 —— 将明文编码为完全不可见的字符,嵌入任意文本中传输,视觉外观不受任何影响。
U+200B 零宽空格 → 1
U+200C 零宽非连接符 → 0
肉眼完全不可见
编码模式
明文输入
输入要隐藏的内容(支持中文 / 英文 / emoji,UTF-8 模式安全往返)
载体文本(可选)
密文将嵌入到该可见文本的末尾,视觉上不改变原文
隐形密文输出
密文本身不可见,可切换「显形」预览以检查内容
载体结果(密文已嵌入)
明文 — 字符
二进制 — 位
零宽字符 — 个
膨胀 —
待解码文本
粘贴含有隐形密文的载体文本(密文隐藏其中,肉眼不可见)
解码结果
提取零宽字符并还原为明文
提取到的零宽字符位流(■ = 1,□ = 0):
零宽字符 — 个
U+200B(1)—
U+200C(0)—
位数 —
字节 —
核心机制
利用 Unicode 零宽字符视觉不可见的特性,将二进制数据嵌入文本载体
本方案使用两个 Unicode 控制字符分别代表二进制位:U+200B(零宽空格,ZWSP)代表逻辑 1,U+200C(零宽非连接符,ZWNJ)代表逻辑 0。将生成的零宽序列插入任意可见文本的内部或末尾,视觉外观完全不变。
| 二进制值 | Unicode | 字符名称 | 视觉表现 |
|---|---|---|---|
| 1 | U+200B | 零宽空格(ZWSP) | 完全不可见 |
| 0 | U+200C | 零宽非连接符(ZWNJ) | 完全不可见 |
编码流程
三步完成信息隐藏
- 明文 → 二进制按所选编码模式转换:ASCII 8位逐字符取 8 位;UTF-8 模式下用 TextEncoder 转为 UTF-8 字节流(中文每字约 24 位,可安全往返)。
- 二进制 → 零宽序列将二进制流中的 1 替换为
U+200B,0 替换为U+200C(可选:先对字节流做 XOR 混淆)。 - 嵌入载体将零宽序列插入任意可见文本的内部或末尾,不影响原文本视觉外观。
解码流程
编码的逆过程
- 提取零宽字符从载体文本中提取所有
U+200B与U+200C(过滤掉普通可见字符)。 - 还原二进制按逆映射替换回 0 / 1,并按 8 位一组还原字节(可选:XOR 逆运算,异或对称)。
- 字节 → 明文ASCII 模式逐字节转字符;UTF-8 模式用 TextDecoder 还原中文等字符。
应用场景
低成本、高效率的信息隐藏技术
数字水印
在版权声明或合同文本中嵌入作者 ID,防止盗版。
数据溯源
在导出的用户数据中嵌入唯一标识,追踪泄露源头。
隐蔽通信
在社交平台、邮件正文中传递敏感信息。请仅在合法合规的场景下使用。
注意事项与限制
实际使用中需了解以下限制
- 平台过滤:部分 Web 应用(如微博、微信后台)会主动清洗 U+200B 等特殊字符,导致密文丢失。
- 复制损耗:部分富文本编辑器(如 Word)可能在复制粘贴中转换或删除这些字符。
- 编码依赖:含中文的明文必须使用 UTF-8 模式,否则不同系统间解码会出现乱码。
- 可见性干扰:虽然肉眼不可见,但在支持「显示控制字符」的编辑器(VS Code、Notepad++)中会显示为灰点,易被察觉。
- 长度膨胀:每 1 个 ASCII 字符膨胀为 8 个零宽字符;中文(UTF-8)通常膨胀为 24 个,体积较大。
- 安全性:纯零宽隐写不具备加密强度,敏感数据建议配合本工具的 XOR 密钥或更强的加密方案预处理。