Skip to content

xiaxiansong/Software-copyright

Repository files navigation

CryptoTool - 密码学工具箱

Go Version License

一个功能全面的密码学工具箱,使用 Go 语言实现。提供对称加密、非对称加密、哈希算法、数字签名、密钥管理、隐写术和密码分析等功能。

✨ 主要特性

🔐 基础密码学

  • 对称加密: AES-GCM, ChaCha20-Poly1305, SM4-ECB (国密)
  • 非对称加密: RSA-OAEP, ECIES (ECC), SM2 (国密)
  • 哈希算法: SHA-256/512, MD5, BLAKE2b, SM3 (国密)
  • 数字签名: RSA-PSS, ECDSA, SM2 签名 (国密)

⚡ 便捷工具 (NEW!)

  • 快速密钥生成: 一键生成随机密钥或从密码派生
  • 批量文件处理: 支持通配符和递归目录加密
  • 管道支持: Unix 风格的标准输入输出操作
  • 进度条显示: 大文件处理实时进度和速度
  • 配置文件: YAML 配置持久化默认设置

🔑 密钥管理系统

  • 密钥加密存储 (SQLite + AES)
  • 密钥生成与导出
  • 支持 RSA 和 ECC 密钥对
  • 主密钥派生 (PBKDF2)

🎭 隐写术 (Steganography)

  • 图像隐写: LSB (最低有效位) 算法,支持 PNG 格式
  • 文本隐写: 零宽字符隐写
  • 隐写检测: 分析图像或文本是否包含隐藏数据

🔍 密码分析工具

  • 熵分析: 计算香农熵,判断数据随机性
  • 频率分析: 字符频率统计,支持英语频率对比
  • 凯撒密码破解: 自动尝试所有偏移量,使用卡方检验
  • 密码强度评估: 多维度评分系统

📦 安装

从源码编译

# 克隆仓库
git clone https://github.com/xiaxiansong/crypto-toolbox.git
cd crypto-toolbox

# 安装依赖
go mod download

# 编译
make build

# 或直接使用 go build
go build -o cryptool ./cmd/cryptool/

依赖项

  • Go 1.21+
  • github.com/spf13/cobra (CLI 框架)
  • github.com/tjfoc/gmsm (国密算法)
  • golang.org/x/crypto (扩展密码库)
  • github.com/mattn/go-sqlite3 (密钥存储)
  • golang.org/x/image (图像处理)

🚀 快速开始

快速密钥生成 (NEW!)

# 生成 256 位随机密钥
cryptool keygen -s 32 -f hex

# 从密码派生密钥
cryptool keygen -p "MyPassword" -s 32 --salt "custom-salt" -i 100000

# 保存到文件
cryptool keygen -s 32 -o mykey.txt

# 使用示例
KEY=$(cryptool keygen -s 32 -f hex)
cryptool encrypt -a aes -k $KEY -i file.txt -o file.enc

对称加密

# 生成随机密钥 (32 字节 = 256 位)
echo "00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff" > key.txt

# 加密文件
cryptool encrypt -a aes -k $(cat key.txt) -i plaintext.txt -o encrypted.bin

# 解密文件
cryptool decrypt -a aes -k $(cat key.txt) -i encrypted.bin -o decrypted.txt

# 使用 ChaCha20
cryptool encrypt -a chacha20 -k $(cat key.txt) -i file.txt -o file.enc

# 使用国密 SM4
cryptool encrypt -a sm4 -k 0123456789abcdef0123456789abcdef -i data.txt -o data.enc

哈希计算

# 计算文件哈希
cryptool hash -a sha256 -i document.pdf
cryptool hash -a blake2b -i file.bin

# 计算文本哈希
cryptool hash -a sha256 -t "Hello World"

# 使用国密 SM3
cryptool hash -a sm3 -i data.txt

密钥生成

# 生成 RSA 密钥对 (2048 位)
cryptool key generate -a rsa -b 2048 -n mykey -o mykey

# 生成 ECC 密钥对 (P-256 曲线)
cryptool key generate -a ecc -n ecckey -o ecckey

# 生成 4096 位 RSA 密钥
cryptool key generate -a rsa -b 4096 -n strongkey -o strongkey

数字签名

# 签名文件
cryptool sign -a rsa -k mykey_private.pem -i document.pdf -o signature.sig

# 验证签名
cryptool verify -a rsa -k mykey_public.pem -i document.pdf -s signature.sig

# 使用 ECDSA
cryptool sign -a ecdsa -k ecckey_private.pem -i data.txt -o data.sig
cryptool verify -a ecdsa -k ecckey_public.pem -i data.txt -s data.sig

隐写术

# 将数据隐藏在图像中 (LSB)
cryptool stego hide -c cover.png -d secret.txt -o stego.png

# 从图像中提取隐藏数据
cryptool stego extract -i stego.png -o extracted.txt

# 检测图像是否可能包含隐藏数据
cryptool stego detect -i suspicious.png

# 文本隐写 (零宽字符)
cryptool stego hide -c cover.txt -t "secret message" -o stego.txt
cryptool stego extract -i stego.txt -o secret.txt
cryptool stego detect -i stego.txt

密码分析

# 熵分析
cryptool analyze entropy -i encrypted_file.bin

# 频率分析
cryptool analyze frequency -i text.txt
cryptool analyze frequency -t "Hello World"

# 破解凯撒密码
cryptool analyze caesar -t "KHOOR ZRUOG"

# 密码强度评估
cryptool analyze password -p "MyP@ssw0rd123"

批量文件处理 (NEW!)

# 批量加密当前目录所有 .txt 文件
cryptool batch encrypt -a aes -k $KEY -p "*.txt" -o encrypted/

# 递归加密子目录
cryptool batch encrypt -a aes -k $KEY -p "docs/**/*.md" -o backup/ -r

# 批量加密特定目录
cryptool batch encrypt -a aes -k $KEY -p "/data/*.dat" -o /backup/

管道操作 (NEW!)

# 从标准输入读取并哈希
echo "Hello World" | cryptool hash -a sha256 -i -

# 管道组合加密
cat file.txt | cryptool encrypt -a aes -k $KEY -i - -o - | base64

# 链式处理
curl https://example.com/data.bin | \
  cryptool encrypt -a chacha20 -k $KEY -i - -o - | \
  aws s3 cp - s3://bucket/encrypted.bin

📚 命令参考

全局选项

  • -h, --help: 显示帮助信息
  • -v, --version: 显示版本信息

主要命令

命令 说明
encrypt 对称加密
decrypt 对称解密
hash 哈希计算
sign 数字签名
verify 签名验证
key 密钥管理
keygen 快速密钥生成 ⭐ NEW
batch 批量文件操作 ⭐ NEW
stego 隐写术操作
analyze 密码分析

详细命令

# 查看特定命令帮助
cryptool encrypt --help
cryptool stego --help
cryptool analyze --help

🏗️ 项目结构

crypto-toolbox/
├── cmd/
│   └── cryptool/          # 主程序入口
├── pkg/
│   ├── symmetric/         # 对称加密 (AES, ChaCha20, SM4)
│   ├── asymmetric/        # 非对称加密 (RSA, ECC, SM2)
│   ├── hash/              # 哈希算法
│   ├── signature/         # 数字签名
│   ├── keystore/          # 密钥管理
│   ├── steganography/     # 隐写术
│   ├── analysis/          # 密码分析
│   └── utils/             # 工具函数
├── internal/
│   └── cli/               # CLI 命令实现
├── test/                  # 测试文件
├── go.mod                 # Go 模块定义
├── go.sum                 # 依赖版本锁定
├── Makefile               # 构建脚本
└── README.md              # 项目文档

🔧 开发

构建项目

make build        # 编译二进制文件
make clean        # 清理构建产物
make test         # 运行测试
make install      # 安装到 $GOPATH/bin

运行测试

go test ./...
go test -v ./pkg/symmetric/
go test -cover ./pkg/...

📖 使用场景

1. 文件加密传输

# 发送方
cryptool encrypt -a aes -k $(openssl rand -hex 32) -i sensitive.doc -o sensitive.enc

# 接收方
cryptool decrypt -a aes -k <key> -i sensitive.enc -o sensitive.doc

2. 数据完整性验证

# 生成哈希
cryptool hash -a sha256 -i file.zip > file.zip.sha256

# 验证完整性
cryptool hash -a sha256 -i downloaded.zip
# 比对输出与 file.zip.sha256

3. 代码签名

# 签名发布包
cryptool sign -a rsa -k release_key.pem -i app.tar.gz -o app.tar.gz.sig

# 用户验证签名
cryptool verify -a rsa -k public_key.pem -i app.tar.gz -s app.tar.gz.sig

4. 秘密信息隐藏

# 在图片中隐藏机密文件
cryptool stego hide -c holiday.png -d confidential.pdf -o holiday_stego.png

# 提取机密文件
cryptool stego extract -i holiday_stego.png -o recovered.pdf

🔒 安全说明

生产环境建议

  • 使用强随机密钥 (至少 256 位)
  • 妥善保管私钥,使用 0600 权限
  • 定期更换密钥
  • 不要在命令行直接传递敏感密钥
  • 使用环境变量或密钥管理服务

算法选择

  • 对称加密: 推荐 AES-GCM 或 ChaCha20-Poly1305
  • 非对称加密: 推荐 RSA-2048+ 或 ECC-P256+
  • 哈希: 推荐 SHA-256 或 BLAKE2b
  • 签名: 推荐 RSA-PSS 或 ECDSA

不推荐使用

  • MD5 哈希 (已被攻破)
  • ECB 模式 (不安全)
  • 小于 2048 位的 RSA 密钥

🎓 教学价值

本项目适合:

  • 密码学课程实验
  • 信息安全学习
  • Go 语言密码学编程
  • 软件著作权申请

📝 代码统计

# 总代码量约 3600+ 行
- pkg/: 2300+ 行 (核心算法实现)
- internal/cli/: 1000+ 行 (CLI 接口)
- cmd/: 50+ 行 (主程序)

# 优化更新(2024-01-22)
+ 新增功能: 6 个模块
+ 新增代码: 518 行 (+16.7%)
+ 详见: OPTIMIZATION_REPORT.md

🌟 核心亮点

  1. 完整的密码学算法库 - 涵盖对称、非对称、哈希、签名
  2. 国密算法支持 - SM2/SM3/SM4 全面支持
  3. 密钥管理系统 - 带加密存储的完整生命周期管理
  4. 隐写术功能 - 图像和文本双模式,少见的特色功能
  5. 密码分析工具 - 教学与实用结合
  6. 跨平台支持 - 纯 Go 实现,一次编译到处运行

🤝 贡献

欢迎提交 Issue 和 Pull Request!

📄 许可证

MIT License

👨‍💻 作者

xiaxiansong


注意: 本软件仅用于学习和研究目的,请遵守当地法律法规。

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors