2 个版本
0.1.1 | 2023年12月2日 |
---|---|
0.1.0 | 2023年1月14日 |
#473 在 密码学
35KB
461 行
隐写术 - 将信息隐藏到图像中
steganographyrs 是一个 Rust 库,可以将信息注入到图像中。
“隐写术”一词意味着隐藏某物。这个定义非常抽象。因此,它有各种实现隐写术目标的方法。这个库依赖于最低有效位。
什么是最低有效位?
库的使用者
安装
cargo add steganographyrs
命令行界面(CLI)的使用者
您必须提供一些参数,例如您想要执行的模式(加密、解密)。如果您想使用 AES 加密,您需要使用 -p
提供您的秘密密码。
您可以使用 --help
或 -h
查看所有选项。
steganographyrs --help
// or in dev:
cargo run -- help
在图像中隐藏未加密的字符串
steganographyrs -e inject -m "My Secret Message" -i testAssets/prestine.png -o out.png
// or in dev:
cargo run -- -e inject -i testAssets/prestine.png -o out.png -m "My Secret Message"
在图像中隐藏加密的字符串
steganographyrs -e inject -p secret -m "My Secret Message" -i testAssets/prestine.png -o out.png
// or in dev:
cargo run -- -e inject -p secret -i testAssets/prestine.png -o out.png -m "My Secret Message"
从标准输入隐藏字符串,将信息加密到图像中
echo "My Secret Message" | steganographyrs -e inject -p secret -i testAssets/prestine.png -o out.png
通过使用标准输入从外部隐藏字符串,将信息加密到图像中
cat testAssets/message1.txt | steganographyrs -e inject -p secret -i testAssets/prestine.png -o out.png
// or in dev:
cat testAssets/message1.txt | cargo run -- -e inject -i testAssets/prestine.png -o out.png
在终端标准输出中从图像中恢复字符串
steganographyrs -e extract -i testAssets/image_with_secret_message.png
// or in dev:
cargo run -- -e extract -i testAssets/image_with_secret_message.png
结果发送到标准输出
在终端标准输出中从图像中恢复加密的字符串
steganographyrs -e extract -p secret -i testAssets/image_with_secret_message.png
// or in dev:
cargo run -- -e extract -p secret -i testAssets/image_with_secret_message.png
从图像信息中恢复字符串到文件
steganographyrs -e extract -p secret -i testAssets/image_with_secret_message.png >> message.txt
// or in dev:
cargo run -- -e extract -p secret -i testAssets/image_with_secret_message.png >> message.txt
从图像信息中恢复加密的字符串到文件
steganographyrs -e extract -p secret -i testAssets/image_with_secret_message.png >> message.txt
// or in dev:
cargo run -- -e extract -p secret -i testAssets/image_with_secret_message.png >> message.txt
库的使用者?
您使用名为 steganography
的入口函数,并可以选择选项以通过加密或解密输入图像中的消息来注入和提取信息。
use steganographyrs::steganography;
let result = steganography(steganography_option); // Result is an option that is only filled on the extraction
作为库的开发者
需要安装什么?
您需要安装正确的工具链
rustup toolchain install stable
rustup default stable
为了执行测试覆盖率,您需要安装
cargo install grcov
rustup component add llvm-tools-preview
为了生成基准测试图,您需要安装 GnuPlot
sudo apt update
sudo apt install gnuplot
# To confirm that it is properly installed:
which gnuplot
执行
要获取所有选项,请使用 cargo run
cargo run -- -help
测试
cargo test
测试覆盖率
在运行覆盖率之前,您必须安装一些组件
cargo install grcov
rustup component add llvm-tools-preview
然后,您可以运行
./coverage.sh
有关Mozilla grcov网站的进一步解释https://github.com/mozilla/grcov
文档
文档是通过使用从源代码生成的
cargo doc --open -document-private-items
测试命令行界面
所有用户命令都正常工作,但您不需要使用
steganographyrs -e true -p secret -m "My Secret Message" -i testAssets/prestine.png -o out.png
您需要使用
cargo run -- -e true -p secret -m "My Secret Message" -i testAssets/prestine.png -o out.png
基准测试
cargo bench
发布
测试货物内容
cargo package --allow-dirty
然后转到 steganographyrs/target/package/
查看内容
推送新的Cargo包
cargo login
cargo publish --dry-run
cargo publish
依赖项
~16MB
~120K SLoC