cryptopp-modern/cryptopp-modern
GitHub: cryptopp-modern/cryptopp-modern
一个积极维护的 Crypto++ 现代化分支,在保持 API 兼容的前提下引入了后量子密码学、BLAKE3、Argon2 等新算法并修复了多个安全漏洞。
Stars: 10 | Forks: 3
# cryptopp-modern
**一个积极维护、现代化的 Crypto++ 分支,提供新算法和安全性改进**
[](https://github.com/cryptopp-modern/cryptopp-modern/releases)
[](LICENSE)
## 概述
**网站:** [cryptopp-modern.com](https://cryptopp-modern.com)
**cryptopp-modern** 是 [Crypto++ 8.9.0](https://github.com/weidai11/cryptopp) 的一个积极维护的分支,其特点包括:
- **后量子密码学** - ML-KEM (FIPS 203), ML-DSA (FIPS 204), SLH-DSA (FIPS 205), X-Wing 混合 KEM
- **BLAKE3** - 现代、快速的哈希函数
- **Argon2** - RFC 9106 密码哈希 (Argon2d, Argon2i, Argon2id)
- **安全补丁** - Marvin 攻击修复 (CVE-2023-50979)、故障注入修复 (CVE-2024-28285)、F(2^m) 和 Rabin/ModularSquareRoot 加固 (CVE-2023-50980, CVE-2023-50981)、ESIGN 改进
- **日历化版本控制** - 清晰的发布日期(年份.月份.增量 格式)
- **积极维护** - 定期更新和改进
- **直接替换兼容** - 使用相同的 `CryptoPP` 命名空间
## 2026.5.0 中的新特性
- **CVE-2023-50980 加固** - 在 DER 边界对 F(2^m) 曲线参数进行严格验证,并对字段度数设置了 4096 的上限
- **CVE-2023-50981 加固** - 对非素数 Rabin 模数在运行时抛出 `BERDecodeError`,并对 `ModularSquareRoot` 设置了迭代上限
- **版本元数据修复** - CMake 和 `cryptest.exe V` 现在会报告正确的发布版本 (Issue #23)
## 快速构建
### CMake(推荐)
```
cmake --preset=default
cmake --build build/default
./build/default/cryptest.exe v
```
### GNUmakefile
```
make -j$(nproc)
./cryptest.exe v
```
有关详细的构建说明,请参阅 [CMAKE.md](CMAKE.md) 或 [GNUMAKEFILE.md](GNUMAKEFILE.md)。
## 文档
- **[cryptopp-modern.com](https://cryptopp-modern.com)** - 完整的 API 和算法文档
- **[GETTING_STARTED.md](GETTING_STARTED.md)** - 包含代码示例的快速入门指南
- **[CMAKE.md](CMAKE.md)** - CMake 构建系统文档
- **[GNUMAKEFILE.md](GNUMAKEFILE.md)** - GNUmakefile 构建系统文档
- **[ROADMAP.md](ROADMAP.md)** - 开发路线图和未来计划
- **[FORK.md](FORK.md)** - 与上游 Crypto++ 的关系
- **[Readme.txt](Readme.txt)** - 完整的算法列表和说明
- **[Install.txt](Install.txt)** - 详细的安装指南
- **[LICENSE](LICENSE)** - Boost Software License 1.0
## 为什么创建分支?
**上游 Crypto++ 状态:**
- 最后一个版本:8.9.0 (2023 年 10 月 1 日)
- 版本号编码限制(无法表示 8.10.0)
- 较慢的开发节奏
**cryptopp-modern 目标:**
- 积极维护和定期发布
- 现代算法支持 (BLAKE3, Argon2, 后量子密码学)
- 更好的代码组织
- 现代 CMake 构建系统
- 日历化版本控制
- 社区驱动的开发
有关详细说明,请参阅 [FORK.md](FORK.md)。
## 功能特性
### 密码学算法
**哈希函数:**
- SHA-2, SHA-3, BLAKE2b/s, **BLAKE3** ⭐
- MD5, RIPEMD, Tiger, Whirlpool, SipHash
**密码哈希 / KDF:**
- **Argon2 (d/i/id)** ⭐ RFC 9106
- PBKDF2, Scrypt, HKDF
**对称加密:**
- AES, ChaCha20, Serpent, Twofish, Camellia, ARIA
- 模式:GCM, CCM, EAX, CBC, CTR 等等
**后量子密码学:**
- **ML-KEM** (FIPS 203) - 密钥封装 ⭐
- **ML-DSA** (FIPS 204) - 数字签名 ⭐
- **SLH-DSA** (FIPS 205) - 基于哈希的签名 ⭐
- **X-Wing** - 混合 KEM (X25519 + ML-KEM-768) ⭐
**公钥密码学:**
- RSA, DSA, ECDSA, Ed25519
- Diffie-Hellman, ECIES, ElGamal
**消息认证:**
- HMAC, CMAC, GMAC, Poly1305
有关完整的算法列表,请参阅 [Readme.txt](Readme.txt)。
## 从 Crypto++ 8.9.0 迁移
**好消息:** 大多数代码无需修改即可正常运行!
### 兼容性
- 所有现有的算法和 API
- 相同的 `CryptoPP` 命名空间
- 版本检查:`#if CRYPTOPP_VERSION >= N`
### 变更
- 版本编码:现在是 `年份*10000 + 月份*100 + 增量`
- 版本解析:使用 `/10000` 获取年份,`(n/100)%100` 获取月份
**示例:**
```
// Old (8.9.0)
const int major = CRYPTOPP_VERSION / 100; // Gets 8
// New (2025.11.0)
const int year = CRYPTOPP_VERSION / 10000; // Gets 2025
const int month = (CRYPTOPP_VERSION / 100) % 100; // Gets 11
```
## 许可证
与原始的 Crypto++ 一样,本库使用:
- **编译:** Boost Software License 1.0
- **独立文件:** 公共领域
详情请参阅 [LICENSE](LICENSE)。
## 联系方式
- **Issues:** [GitHub Issues](https://github.com/cryptopp-modern/cryptopp-modern/issues)
- **Discussions:** [GitHub Discussions](https://github.com/cryptopp-modern/cryptopp-modern/discussions)
## 致谢
**cryptopp-modern** 建立在以下优秀工作的基础之上:
- **Wei Dai** - 原始 Crypto++ 的创建者和维护者
- **The Crypto++ team** - 上游 Crypto++ 的所有贡献者
- **BLAKE3 team** - 现代密码学哈希设计
- **Argon2 team** - 密码哈希竞赛冠军
**由 [CoraleSoft](https://github.com/Coralesoft) 维护**
标签:Argon2, Bash脚本, BLAKE3, Boost许可证, C++, CMake, Crypto++, CVE修复, DNS 反向解析, ML-DSA, ML-KEM, SLH-DSA, X-Wing, 加密库, 后量子密码学, 哈希算法, 安全补丁, 密码学, 密码算法, 手动系统调用, 抗量子加密, 数据擦除, 网络安全, 隐私保护