cryptopp-modern/cryptopp-modern

GitHub: cryptopp-modern/cryptopp-modern

一个积极维护的 Crypto++ 现代化分支,在保持 API 兼容的前提下引入了后量子密码学、BLAKE3、Argon2 等新算法并修复了多个安全漏洞。

Stars: 10 | Forks: 3

# cryptopp-modern **一个积极维护、现代化的 Crypto++ 分支,提供新算法和安全性改进** [![Version](https://img.shields.io/badge/version-2026.5.0-blue.svg)](https://github.com/cryptopp-modern/cryptopp-modern/releases) [![License](https://img.shields.io/badge/license-Boost-green.svg)](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, 加密库, 后量子密码学, 哈希算法, 安全补丁, 密码学, 密码算法, 手动系统调用, 抗量子加密, 数据擦除, 网络安全, 隐私保护