go get lukechampine.com/jsteg
jsteg 是一个用于在 JPEG 文件中隐藏数据的包,这项技术称为
隐写术。实现方法
是将数据的每一位复制到图像的最低有效位。
可隐藏的数据量取决于 JPEG 的文件大小;大约需要
10-14 字节的 JPEG 来存储每个字节的隐藏数据。
// 打开一个已有的 JPEG 文件
f, _ := os.Open(filename)
img, _ := jpeg.Decode(f)
// 向其中添加隐藏数据
out, _ := os.Create(outfilename)
data := []byte("my secret data")
jsteg.Hide(out, img, data, nil)
// 读取隐藏数据:
hidden, _ := jsteg.Reveal(out)
注意:数据不以任何方式分隔;调用者需要自行
确定 hidden 中哪些字节是有用的。最简单的做法
是在数据前加上其长度。
本包附带了一个 jsteg 命令,提供了此包函数的简单封装。
它可以在 JPEG 文件中隐藏和揭示数据,并支持输入/输出重定向。
它自动处理长度前缀,并使用魔术头标识由 jsteg 生成的 JPEG。
还包含一个功能更窄的命令 slink。slink 将公钥嵌入 JPEG,
并使得从密码字符串派生的密钥对签署数据和验证签名变得容易。完整说明请参见 cmd/slink。
两个命令的二进制文件可在此处找到:发布页。
本包重用了 image/jpeg 包的大量代码。
管理该代码使用的 BSD 风格许可证可在 go_LICENSE 文件中找到。