中文:
SteganographyLibrary 是一个面向研究与工程的 Python 库,整合并实现了多种经典的文本隐写方法(包含编辑式与生成式),并提供统一的接口、可替换的预训练语言模型后端(通过 Hugging Face transformers),以及用于加密/解密的命令行工具。目标用户为隐写学、信息安全和自然语言处理领域的研究人员与工程师。
English:
SteganographyLibrary is a Python toolkit for research and engineering that integrates multiple classic text steganography methods (both edit-based and generative). It offers a unified API, interchangeable pre-trained language-model backends (via Hugging Face transformers), and a command-line tool for encrypting/decrypting messages. The project targets researchers and engineers in steganography, information security, and NLP.
- 统一接口 / Unified API:所有方法实现遵循
encrypt(...)/decrypt(...)接口,便于替换、对比和集成。 - 模块化设计 / Modular Design:每种算法独立模块实现,代码清晰、易扩展。
- 多种方法 / Multiple Methods:实现包括 Masked-LM 编辑式算法与多种生成式算法(LSTM/Bins、RNN+Huffman、Neural+Arithmetic、Discop 等)。
- 灵活后端 / Flexible Backends:通过
transformers加载 BERT、GPT-2、RoBERTa 等模型作为后端。 - 命令行工具 / CLI:
main.py提供加密/解密流程与参数配置,便于实验复现。 - 复现实验友好 / Reproducibility-friendly:建议记录随机种子、模型版本与参数配置以保证可逆性与复现性。
SteganographyLibrary/
├─ cover.txt # 示例载体文本(或 prompt)
├─ payload.txt # 示例秘密信息
├─ stego.txt # 隐写文本输出
├─ requirements.txt # Python 依赖
├─ main.py # CLI:加密/解密入口
├─ utils.py # 公共工具(模型加载、IO 等)
└─ methods/ # 隐写算法实现
├─ edit_stego.py # 编辑式(Masked LM)
├─ lstm_stego.py # 生成式:Bins/LSTM
├─ huffman_stega.py # 生成式:哈夫曼编码
├─ neural_stego.py # 生成式:神经+算术编码
└─ discop_stego.py # 生成式:Discop(Distribution Copies)
git clone https://github.com/your-username/SteganographyLibrary.git
cd SteganographyLibrary将
your-username替换为实际仓库路径。
python -m venv venv
source venv/bin/activate # macOS / Linux
# venv\Scripts\activate # Windows请先根据你的系统与 CUDA 环境,从 PyTorch 官方页面获取合适的 PyTorch 安装命令(https://pytorch.org/get-started/locally/),然后安装其它依赖:
pip install -r requirements.txt常见依赖示例:torch, transformers, nltk, tqdm, numpy 等。
import nltk
nltk.download('punkt')
nltk.download('stopwords')main.py 提供统一的命令行接口用于加密与解密。
常用参数 / Common arguments (summary)
--action:encrypt或decrypt(默认:encrypt)。--method:edit/lstm/rnn/neural/discop等。--model:Hugging Face 模型名或路径(例如bert-base-cased,gpt2)。--cover:载体文本文件或 prompt(加密时使用)。--payload:秘密信息文件(加密时使用)。--stego:隐写文本输入/输出路径。--mask_interval:编辑式方法中的掩码间隔(示例)。--candidate_pool_size:生成式候选池大小。--score_threshold:候选评分阈值(编辑式)。
重要提示:解密时必须严格使用与加密时相同的参数(包括模型、随机种子、掩码/候选策略等),否则无法恢复原始秘密信息。
python main.py --action encrypt \
--method edit \
--model bert-base-cased \
--cover cover.txt \
--payload payload.txt \
--stego stego_edit_out.txt \
--mask_interval 3 \
--score_threshold 0.01python main.py --action encrypt \
--method rnn \
--model gpt2 \
--cover "The weather is" \
--payload payload.txt \
--stego stego_rnn_out.txt \
--candidate_pool_size 50python main.py --action decrypt \
--method edit \
--model bert-base-cased \
--stego stego_edit_out.txt \
--mask_interval 3 \
--score_threshold 0.01- Edit-based(编辑式):使用 Masked LM 对文本做局部替换,通过候选词的编码顺序嵌入信息。实现位于
methods/edit_stego.py。 - LSTM / Bins:基于 LSTM 与 Bins 思想的生成式方法,参见
methods/lstm_stego.py。 - Huffman-based(哈夫曼):结合语言模型概率与哈夫曼编码构建隐写码流,参见
methods/huffman_stega.py。 - Neural + Arithmetic(神经+算术编码):用神经模型的概率分布进行算术编码以实现高效编码,参见
methods/neural_stego.py。 - Discop(Distribution Copies):基于“分布副本”的安全性方法,参见
methods/discop_stego.py。
- 固定并记录随机种子(seed)。
- 保存模型版本、tokenizer 与完整 CLI 参数(建议写入
run_config.json)。 - 记录评估指标(隐写容量、语义/语言质量、检测率等)。
- 保证解密与加密参数严格一致以便成功解码。
欢迎提交 Issue 或 Pull Request。常见流程:
- Fork 仓库;
- 新建分支:
git checkout -b feature/your-feature; - 提交更改:
git commit -m "Add ..."; - 推送分支并发起 PR。
建议在 PR 中包含复现步骤、示例命令与期望输出。我们欢迎改进实现、添加基准测试与文档更新。
本项目采用 MIT License。详见仓库根目录 LICENSE 文件。
- Ueoka et al., Frustratingly Easy Edit-based Linguistic Steganography with a Masked Language Model
- Fang et al., Generating Steganographic Text with LSTMs
- Yang et al., RNN-Stega: Linguistic Steganography Based on Recurrent Neural Networks
- Ziegler et al., Neural Linguistic Steganography
- Huang et al., Discop: Provably Secure Steganography in Practice Based on "Distribution Copies"
- Hugging Face
transformersproject and documentation
感谢原论文作者与开源社区(特别是 Hugging Face transformers)提供的理论和工具,使得本库可以实现并复现多种文本隐写方法。