开源密码函式库Crypto++
2024-06-03 13:50:09 阿炯

本站赞助商链接,请多关照。 Crypto++(也称作CryptoPP、libcrypto++或libcryptopp)是一套自由开源的 C++ 密码学函数库,在学术界、开源界,甚至是商业用途,其都被广泛地使用。它由美国加州州立大学的 Bruce Schneier 在1995年创建,并在互联网上发布。Crypto++ 是用 C++ 编写的,并提供了丰富的密码学功能和算法实现,包括对称加密、非对称加密、哈希函数、消息认证码(MAC)、数字签名、随机数生成器等。最初由戴维开发,2015 年后为 Crypto 专案团队开发。采用Boost和公共领域双许可证协议授权。


该库支持多种操作系统和平台,包括 Windows、Linux、macOS、iOS、Android 等,可以在不同平台上进行开发和部署。

丰富的密码学算法:提供了大量的密码学算法实现,包括对称加密算法(如 AES、DES、RC4 等)、非对称加密算法(如 RSA、DSA、ECC 等)、哈希函数(如 SHA-1、SHA-256、MD5 等)、消息认证码(如 HMAC 等)、数字签名算法等。

高性能和安全性:实现了许多密码学算法的高性能版本,并且经过了严格的测试和审查,具有较高的安全性和可靠性。

灵活的使用方式:提供了简单易用的 API 接口,使得开发人员可以方便地在其应用程序中集成各种密码学功能,并根据需要进行定制和扩展。

完全开源和免费:是完全开源的,采用了公共领域(Public Domain)许可证,可以免费用于商业和非商业目的。

持续更新和维护:社区活跃,持续更新和维护库中的代码,以修复漏洞、改进性能,并添加新的功能和算法。

除了完整支持常见的算法,Crypto++ 也包含了较冷门、较少被使用的算法,例如 Camellia 是 ISO/NESSIE/IETF 核可的 区块加密法,与 AES 大致相同;而 Whirlpool 是 ISO/NESSIE/IETF 核可的 密码杂凑函式,与 SHA 大致相同。这两套冷门的算法都包含在 Crypto++ 之中。

另外该函数库有时也会提出很先进的算法、实作供密码学界研究。例如 VMAC 以杂凑为基础的通用 讯息认证码,在将其提交给 IETF 的过程中,就被 Crypto++ 函式库支持了。另外还有 ECC Brainpool 曲线,于 2009 年被加入 RFC 5639 草稿中,在同月被加入 Crypto++ 5.6.0 中。

Crypto++ 算法及实现

理论或操作:算法及实作
伪随机数生成:LCG, KDF2, Blum Blum Shub, ANSI X9.17, 梅森旋转算法, RDRAND, RDSEED

串流加密法:ChaCha8/12/20, ChaCha20 (IETF version), HC-128 and HC-256, Panama, Rabbit, Salsa20, SOSEMANUK, XSalsa20

AES 及候选标准:Rijndael (高级加密标准评选过程), RC6, MARS, Twofish, Serpent, CAST-256

其他区块加密法:ARIA, Blowfish, Camellia, CHAM, HIGHT, IDEA, Kalyna (128/256/512), LEA, RC5, 3DES (2- and 3-key), SEED, SHACAL-2, Simon (64/128), Speck (64/128), SIMECK, Skipjack, SM4, TEA, Threefish (256/512/1024), XTEA

区块加密法工作模式:ECB, CBC, CTS, CFB, OFB, CTR, XTS

认证加密模式:CCM, GCM, EAX, ChaCha20Poly1305

区块加密法填充模式:PKCS#5, PKCS#7, Zeros, One and zeros, W3C Padding

消息识别码:VMAC, HMAC, CMAC, CBC-MAC, DMAC, Two-Track-MAC

密码杂凑函式:BLAKE2 (BLAKE2b and BLAKE2s), Keccak, SHA-1, SHA-2 (SHA-224, SHA-256, SHA-384, and SHA-512), SHA3, Tiger, WHIRLPOOL, RIPEMD (RIPEMD-128, RIPEMD-160, RIPEMD-256, and RIPEMD-320)

密钥衍生函式:PBKDF1 and PBKDF2 from PKCS #5, PBKDF from PKCS #12 appendix B, Krawczyk and Eronen's HKDF

公开金钥加密:RSA, DSA, ElGamal, Nyberg-Rueppel (NR), Rabin-Williams (RW), LUC, LUCELG, DLIES (DHAES 的变体), ESIGN, curve25519

公钥密码学填充模式:PKCS#1 v2.0, OAEP, PSS, PSSR, IEEE P1363 EMSA2 and EMSA5

密钥交换协定:Diffie–Hellman (DH), Unified Diffie–Hellman (DH2), Menezes–Qu–Vanstone (MQV), Hashed MQV (HMQV), Fully Hashed MQV (FHMQV), LUCDIF, XTR-DH, x25519

椭圆曲线密码学:ECDSA, ECNR, ECIES, ECDH, ECMQV, Ed25519

私钥分享协定:Shamir's Secret Sharing, Rabin's information dispersal algorithm (IDA)


Boost许可证

Boost软件协议(Boost Software License)是一个由Boost C++ Libraries使用的开源协议。这也是一个大量开源C++项目使用的协议。这是一个类似于BSD许可证和MIT许可证的宽松协议。

协议自2008年2月已经被开放源代码促进会核准。根据自由软件基金会的列表,它被确认为自由软件协议并且与GNU通用公共许可证兼容。

最新版本:8.7
2022年8月发行。

官方主页:https://www.cryptopp.com/