关于此工具
本工具使用最低有效位(LSB)隐写术,把一段秘密文本消息藏进一张普通图片,随后再把它取回来。一切都在你的浏览器中通过一个 HTML canvas 本地完成:图片和你的消息绝不会离开你的设备,不会上传到任何服务器。
LSB 隐写术的原理是覆盖每个颜色通道的最低有效位。图片被绘制到 canvas 上并读取其原始像素;消息被转换为 UTF-8 字节,然后逐位地用这些位替换连续像素中红、绿、蓝通道的最低位(跳过 alpha/透明度通道以避免视觉瑕疵)。仅改变最低位会使每个通道最多偏移 255 中的 1,因此结果在肉眼看来完全相同。最先写入一个 32 位大端长度头,以便解码器确切知道后面跟着多少个消息字节。每个像素携带 3 位,因此一张图片可容纳约 floor(width x height x 3 / 8) 字节,再减去 4 个头字节。
要隐藏消息,选择“隐藏消息”,选一张图片,输入你的文本,然后点击“编码并下载”以保存一张 PNG。要还原它,切换到“还原消息”并打开一张隐写 PNG;隐藏的文本会被自动解码。输出必须是 PNG,因为它是无损的——JPEG 会重新压缩像素,从而抹掉脆弱的最低有效位,破坏消息。
常见问题
这是安全的或加密的吗?
不是。LSB 隐写术是隐蔽,而非加密——它隐藏了消息的存在,但不保护其内容。任何怀疑是隐写图片并使用相同方法的人都能读取它。若需真正的保密,请先加密你的文本(例如用 AES 工具),再隐藏密文。
为什么它导出 PNG 而不是 JPEG?
消息存在于像素的最低有效位中,这些位只能无损保存。PNG 会精确保留每一位。JPEG 是有损的,会重新压缩图片,改变那些低位并破坏隐藏数据,因此本工具始终保存为 PNG。
一张图片能藏多少文本?
大约 floor(width x height x 3 / 8) 字节,再减去为长度头保留的 4 个字节。一张 1000 x 1000 的图片可容纳约 375,000 字节。加载图片时本工具会显示确切容量,若你的消息过大也会提醒你。
它支持表情符号和其他语言吗?
支持。消息以 UTF-8 编码,因此表情符号、重音字符和非拉丁文字都能精确往返。请注意,多字节字符会比纯 ASCII 占用更多图片容量。