Crypto++ 库是一个用c++ 编写的密码类库,是一个自由软件。Crypto++™ Library 5.1于2003年3月22日发布,目前的最高的版本是Crypto++ Library 5.6.2,该版本加入了除了作者Wei Dai以外的另外一些作者的代码重新包装成类,类库里主要包含下列的内容:
1、 用
抽象类定义API类的继承层次
1997年4月15日美国国家标准技术研究所NIST发起征集高级加密标准AES算法的活动,目的是为确定一个安全性能更好的分组
密码算法用于取代DES,AES的基本要求是比三重DES快并且至少与DES一样安全,分组长度为128位,
密钥长度为128位,192位或256位.2001年11月26日,NIST正式公布高级加密标准AES, AES的安全性能是良好的,经过多年来的分析和测试,至今没有发现AES的明显缺点,也没有找到明显的
安全漏洞. AES能够抵抗目前已知的各种攻击方法的攻击。
3、 对称
分组密码:IDEA, DES, Triple-DES (DES-EDE2 and DES-EDE3), DESX (DES-XEX3), RC2, RC5, Blowfish, Diamond2, TEA, SAFER, 3-WAY, GOST, SHARK, CAST-128, Square, Skipjack。
分组密码又称为秘
密钥密码或对称密码。利用分组密码对明文进行加密时,首先需要对明文进行分组,每组的长度都相同,然后对每组明文分别加密得到等长的密文,分组密码的特点是加密密钥与解密密钥相同。分组密码的安全性应该主要依赖于密钥,而不依赖于对
加密算法和解密算法的保密。因此,
分组密码的加密和解密算法可以公开。
4、 一般的密码模式:ECB, CBC, CBC ciphertext stealing (CTS), CFB, OFB, counter mode (CTR) 。
5、
序列密码:Panama, ARC4, SEAL, WAKE, WAKE-OFB, BlumBlumShub
序列密码可以认为是起源于20世纪20年代的Vernam体系,当Vernam体制中的
密钥序列是随机的(0,1)时,他就是“
一次一密“
密码体制。Shannon已经证明了“一次一密“密码体制在理论上是不可破译的。由于随机的密钥序列产生、存储以及分配等方面存在一定的困难,Vernam体制在当时并没有得到广泛的应用。随着
微电子技术和数学理论的发展与完善,基于
伪随机序列的
序列密码得到了长足的发展和应用。在序列密码中,加密和解密所用的密钥都是伪随机序列,伪随机序列的产生比较容易并且有比较成熟的数学理论工具,目前,序列密码是 世界各国的军事和外交等领域中使用的主要密码体制之一。
6、 公钥密码: RSA, DSA, ElGamal, Nyberg-Rueppel (NR), Rabin, Rabin-Williams (RW), LUC, LUCELG, DLIES (variants of DHAES), ESIGN
RSA公钥密码体制的安全性是基于大整数的素分解问题的难解性,
7、公钥密码系统补丁:
PKCS#1 v2.0, OAEP, PSSR, IEEE P1363 EMSA2
8、
密钥协商方案:
Diffie-Hellman (DH), Unified Diffie-Hellman (DH2), Menezes-Qu-Vanstone (MQV), LUCDIF, XTR-DH
9、椭圆曲线密码:ECDSA, ECNR, ECIES, ECDH, ECMQV
9、 单向
hash函数:
SHA-1,:
安全
hash算法SHA
MD2, MD4, MD5, HAVAL, RIPEMD-160, Tiger, SHA-2 (SHA-256, SHA-384, and
SHA-512), Panama
11、消息认证码(MAC):MD5-MAC, HMAC, XOR-MAC, CBC-MAC, DMAC
12、基于密码结构的
Hash函数:Luby-Rackoff, MDC
13、
伪随机数发生器(PRNG): ANSI X9.17 appendix C, PGP's RandPool
14、password based key derivation functions:PBKDF1 and PBKDF2 from PKCS #5
15、压缩和解压算法
16、大整数和多项式快速
精确算法
17、有限范围内的算法包括GF(p) 和GF(2^n)
18、素数的产生和验证