Crypto++

Crypto++(也称作CryptoPP、libcrypto++或libcryptopp)是一套自由开源的 C++ 密码学函式库。在学术界、学生专案、开源专案,甚至是商业用途,Crypto++ 都被广泛地使用。

Crypto++
Crypto++-logo.png
开发者最初由戴维(英语:Wei Dai)开发,2015 年后为 Crypto 专案团队开发
首次发布1995
目前版本
  • 8.7.0 (2022年8月7日;稳定版本)[1]
编辑维基数据链接
源代码库 编辑维基数据链接
编程语言C++
操作系统Cross-platform
类型安全性加密函式库
许可协议Boost授权条款(原为 Crypto++ 授权)/ 独立档案为 公有领域 授权
网站www.cryptopp.com

算法

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

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

Crypto++ 算法及实作
理论或操作 算法及实作
伪随机数生成(英语:Pseudorandom number generator) LCG, KDF2, Blum Blum Shub, ANSI X9.17, 梅森旋转算法, RDRAND, RDSEED
串流加密法 ChaCha8/12/20, ChaCha20 (IETF version), HC-128 and HC-256(英语:HC-256), Panama(英语:Panama (cryptography)), Rabbit(英语:Rabbit (cipher)), Salsa20, SOSEMANUK(英语:SOSEMANUK), XSalsa20
AES 及候选标准 Rijndael (高级加密标准评选过程), RC6, MARS(英语:MARS (cryptography)), Twofish, Serpent, CAST-256(英语:CAST-256)
其他区块加密法 ARIA(英语:ARIA_(cipher)), 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(英语:CCM mode), GCM(英语:Galois/Counter Mode), EAX(英语:EAX mode), ChaCha20Poly1305
区块加密法填充模式 PKCS#5, PKCS#7, Zeros, One and zeros, W3C Padding
讯息识别码 VMAC, HMAC, CMAC, CBC-MAC(英语: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(英语:Tiger (hash function)), WHIRLPOOL(英语:Whirlpool (cryptography)), 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
金钥交换协定(英语:Key-agreement protocol) 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
私钥分享协定(英语:Secret sharing) Shamir's Secret Sharing(英语:Shamir's Secret Sharing), Rabin's information dispersal algorithm(英语:information dispersal algorithm) (IDA)

参考

  1. ^ https://cryptopp.com/release870.html.
  2. ^ Japan's First 128-bit Block Cipher 'Camellia' Approved as a New Standard Encryption Algorithm in the Internet. physorg.com. [2010-08-12]. (原始内容存档于2012-01-06). 
  3. ^ Wu, Kehe; Li, Yi; Chen, Long; Wang, Zhuxiao. Research of Integrity and Authentication in OPC UA Communication Using Whirlpool Hash Function. Applied Sciences. 2015-08-21, 5 (3): 446–458. ISSN 2076-3417. doi:10.3390/app5030446. 
  4. ^ Elliptic Curve Cryptography (ECC) Brainpool Standard Curves and Curve Generation. RFC 5639. IETF. 2009 [2010-08-08]. (原始内容存档于2021-05-04). 
  5. ^ Crypto++ 5.6.0 Release Notes. Crypto++ Website. 2009 [2010-08-08]. (原始内容存档于2021-02-24).