零宽字符隐写术

基于 U+200B / U+200C 的二进制信息隐藏方案 —— 将明文编码为完全不可见的字符,嵌入任意文本中传输,视觉外观不受任何影响。

U+200B 零宽空格 → 1 U+200C 零宽非连接符 → 0 肉眼完全不可见
编码模式

明文输入

输入要隐藏的内容(支持中文 / 英文 / emoji,UTF-8 模式安全往返)

载体文本(可选)

密文将嵌入到该可见文本的末尾,视觉上不改变原文

隐形密文输出

密文本身不可见,可切换「显形」预览以检查内容


        

显形预览:■ 代表 U+200B(逻辑 1),□ 代表 U+200C(逻辑 0)

明文 字符 二进制 零宽字符 膨胀

待解码文本

粘贴含有隐形密文的载体文本(密文隐藏其中,肉眼不可见)

解码结果

提取零宽字符并还原为明文

提取到的零宽字符位流(■ = 1,□ = 0):



        
零宽字符 U+200B(1) U+200C(0) 位数 字节

核心机制

利用 Unicode 零宽字符视觉不可见的特性,将二进制数据嵌入文本载体

本方案使用两个 Unicode 控制字符分别代表二进制位:U+200B(零宽空格,ZWSP)代表逻辑 1,U+200C(零宽非连接符,ZWNJ)代表逻辑 0。将生成的零宽序列插入任意可见文本的内部或末尾,视觉外观完全不变。

二进制值Unicode字符名称视觉表现
1U+200B零宽空格(ZWSP)完全不可见
0U+200C零宽非连接符(ZWNJ)完全不可见

编码流程

三步完成信息隐藏

  1. 明文 → 二进制按所选编码模式转换:ASCII 8位逐字符取 8 位;UTF-8 模式下用 TextEncoder 转为 UTF-8 字节流(中文每字约 24 位,可安全往返)。
  2. 二进制 → 零宽序列将二进制流中的 1 替换为 U+200B,0 替换为 U+200C(可选:先对字节流做 XOR 混淆)。
  3. 嵌入载体将零宽序列插入任意可见文本的内部或末尾,不影响原文本视觉外观。

解码流程

编码的逆过程

  1. 提取零宽字符从载体文本中提取所有 U+200BU+200C(过滤掉普通可见字符)。
  2. 还原二进制按逆映射替换回 0 / 1,并按 8 位一组还原字节(可选:XOR 逆运算,异或对称)。
  3. 字节 → 明文ASCII 模式逐字节转字符;UTF-8 模式用 TextDecoder 还原中文等字符。

应用场景

低成本、高效率的信息隐藏技术

数字水印

在版权声明或合同文本中嵌入作者 ID,防止盗版。

数据溯源

在导出的用户数据中嵌入唯一标识,追踪泄露源头。

隐蔽通信

在社交平台、邮件正文中传递敏感信息。请仅在合法合规的场景下使用。

注意事项与限制

实际使用中需了解以下限制

  • 平台过滤:部分 Web 应用(如微博、微信后台)会主动清洗 U+200B 等特殊字符,导致密文丢失。
  • 复制损耗:部分富文本编辑器(如 Word)可能在复制粘贴中转换或删除这些字符。
  • 编码依赖:含中文的明文必须使用 UTF-8 模式,否则不同系统间解码会出现乱码。
  • 可见性干扰:虽然肉眼不可见,但在支持「显示控制字符」的编辑器(VS Code、Notepad++)中会显示为灰点,易被察觉。
  • 长度膨胀:每 1 个 ASCII 字符膨胀为 8 个零宽字符;中文(UTF-8)通常膨胀为 24 个,体积较大。
  • 安全性:纯零宽隐写不具备加密强度,敏感数据建议配合本工具的 XOR 密钥或更强的加密方案预处理。