Skip to content

octal-zhihao/SteganographyLibrary

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SteganographyLibrary


项目概述 / Project Overview

中文:
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.


主要特性 / Key Features

  • 统一接口 / Unified API:所有方法实现遵循 encrypt(...) / decrypt(...) 接口,便于替换、对比和集成。
  • 模块化设计 / Modular Design:每种算法独立模块实现,代码清晰、易扩展。
  • 多种方法 / Multiple Methods:实现包括 Masked-LM 编辑式算法与多种生成式算法(LSTM/Bins、RNN+Huffman、Neural+Arithmetic、Discop 等)。
  • 灵活后端 / Flexible Backends:通过 transformers 加载 BERT、GPT-2、RoBERTa 等模型作为后端。
  • 命令行工具 / CLImain.py 提供加密/解密流程与参数配置,便于实验复现。
  • 复现实验友好 / Reproducibility-friendly:建议记录随机种子、模型版本与参数配置以保证可逆性与复现性。

仓库结构 / Repository Layout

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)

快速开始 / Quick Start

1. 克隆仓库 / Clone repository

git clone https://github.com/your-username/SteganographyLibrary.git
cd SteganographyLibrary

your-username 替换为实际仓库路径。

2. 建议创建虚拟环境 / Recommended: create a virtual env

python -m venv venv
source venv/bin/activate        # macOS / Linux
# venv\Scripts\activate         # Windows

3. 安装依赖 / Install dependencies

请先根据你的系统与 CUDA 环境,从 PyTorch 官方页面获取合适的 PyTorch 安装命令(https://pytorch.org/get-started/locally/),然后安装其它依赖:

pip install -r requirements.txt

常见依赖示例:torch, transformers, nltk, tqdm, numpy 等。

4. NLTK 数据(若需要) / NLTK data (if needed)

import nltk
nltk.download('punkt')
nltk.download('stopwords')

使用说明(CLI) / Usage (CLI)

main.py 提供统一的命令行接口用于加密与解密。

常用参数 / Common arguments (summary)

  • --actionencryptdecrypt(默认:encrypt)。
  • --methodedit / lstm / rnn / neural / discop 等。
  • --model:Hugging Face 模型名或路径(例如 bert-base-cased, gpt2)。
  • --cover:载体文本文件或 prompt(加密时使用)。
  • --payload:秘密信息文件(加密时使用)。
  • --stego:隐写文本输入/输出路径。
  • --mask_interval:编辑式方法中的掩码间隔(示例)。
  • --candidate_pool_size:生成式候选池大小。
  • --score_threshold:候选评分阈值(编辑式)。

重要提示:解密时必须严格使用与加密时相同的参数(包括模型、随机种子、掩码/候选策略等),否则无法恢复原始秘密信息。

加密示例:编辑式 / Example — edit-based encryption

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.01

加密示例:生成式(RNN / GPT-2) / Example — generative (RNN / GPT-2)

python main.py --action encrypt \
    --method rnn \
    --model gpt2 \
    --cover "The weather is" \
    --payload payload.txt \
    --stego stego_rnn_out.txt \
    --candidate_pool_size 50

解密示例 / Example — decrypt

python main.py --action decrypt \
    --method edit \
    --model bert-base-cased \
    --stego stego_edit_out.txt \
    --mask_interval 3 \
    --score_threshold 0.01

方法简要说明 / Methods — brief

  • 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

实验与复现建议 / Reproducibility tips

  1. 固定并记录随机种子(seed)。
  2. 保存模型版本、tokenizer 与完整 CLI 参数(建议写入 run_config.json)。
  3. 记录评估指标(隐写容量、语义/语言质量、检测率等)。
  4. 保证解密与加密参数严格一致以便成功解码。

贡献 / Contributing

欢迎提交 Issue 或 Pull Request。常见流程:

  1. Fork 仓库;
  2. 新建分支:git checkout -b feature/your-feature
  3. 提交更改:git commit -m "Add ...";
  4. 推送分支并发起 PR。

建议在 PR 中包含复现步骤、示例命令与期望输出。我们欢迎改进实现、添加基准测试与文档更新。


许可证 / License

本项目采用 MIT License。详见仓库根目录 LICENSE 文件。


参考文献 / References

  • 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 transformers project and documentation

致谢 / Acknowledgements

感谢原论文作者与开源社区(特别是 Hugging Face transformers)提供的理论和工具,使得本库可以实现并复现多种文本隐写方法。

About

A benchmark algorithm library for generative text steganography.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages