steganography
v1.0.2
隐写术是一个用 Pure go 编写的库,允许对图像进行简单的 LSB 隐写术。它能够对图像进行编码和解码。它可以存储任何格式的文件。该库的灵感来自于 EthanWelsh 的 Stego,这是一个具有相同用途的命令行实用程序。
go get - u github . com / auyer / steganography
原来的 | 编码 |
---|---|
第二张图片包含维基百科上剑龙描述的第一段,也可在 Examples/message.txt 中作为示例。
package main
import (
"bufio"
"image/png"
"io/ioutil"
"github.com/auyer/steganography"
)
写入模式用于获取消息并使用 LSB 隐写术将其嵌入到图像文件中,以便生成包含您的消息的秘密图像文件。
请注意,最小图像大小为 1 字节 24 像素。每增加一个字节,就需要多 3 个像素。
inFile , _ := os . Open ( "input_file.png" ) // opening file
reader := bufio . NewReader ( inFile ) // buffer reader
img , _ := png . Decode ( reader ) // decoding to golang's image.Image
w := new (bytes. Buffer ) // buffer that will recieve the results
err := steganography . Encode ( w , img , [] byte ( "message" )) // Encode the message into the image
if err != nil {
log . Printf ( "Error Encoding file %v" , err )
return
}
outFile , _ := os . Create ( "out_file.png" ) // create file
w . WriteTo ( outFile ) // write buffer to it
outFile . Close ()
注意:为了简洁起见,所有错误检查都被删除,但它们应该包括在内。
可以使用长度模式对载体图像进行初步检查,以推断其可以存储的文件大小。
sizeOfMessage := steganography . GetMessageSizeFromImage ( img ) // retrieves the size of the encoded message
读取模式用于读取使用 LSB 隐写术编码的图像,并从该图像中提取隐藏消息。
inFile , _ := os . Open ( encodedInputFile ) // opening file
defer inFile . Close ()
reader := bufio . NewReader ( inFile ) // buffer reader
img , _ := png . Decode ( reader ) // decoding to golang's image.Image
sizeOfMessage := steganography . GetMessageSizeFromImage ( img ) // retrieving message size to decode in the next line
msg := steganography . Decode ( sizeOfMessage , img ) // decoding the message from the file
fmt . Println ( string ( msg ))
注意:为了简洁起见,所有错误检查都被删除,但它们应该包括在内。
有关完整示例,请参阅 Examples/stego.go 文件。它是一个基于此存储库的原始分支的命令行应用程序,但经过修改以使用隐写术库。