OpenSSL 详细介绍
对称加密算法
OpenSSL 一共提供了8 种对称加密算法,其中7 种是分组加密算法,仅有的一种流加密算法是RC4。这7 种分组加密算法分别是AES、DES、Blowfish、CAST、IDEA、RC2、RC5,都支持电子密码本模式(ECB)、加密分组链接模式(CBC)、加密反馈模式(CFB)和输出反馈模式(OFB)四种常用的分组密码加密模式。其中,AES 使用的加密反馈模式(CFB)和输出反馈模式(OFB)分组长度是128 位,其它算法使用的则是64 位。事实上,DES 算法里面不仅仅是常用的DES 算法,还支持三个密钥和两个密钥3DES 算法。
虽然每种加密算法都定义了自己的接口函数,但是OpenSSL 还使用EVP 封装了所有的对称加密算法,使得各种对成加密算法能够使用统一的API 接口EVP_Encrypt 和EVP_Decrypt 进行数据的加密和解密,大大提供了代码的可重用性能。
非对称加密算法
OpenSSL 一共实现了4 种非对称加密算法,包括DH 算法、RSA 算法、DSA 算法和椭圆曲线算法(EC)。DH 算法一般用户密钥交换。RSA 算法既可以用于密钥交换,也可以用于数字签名,当然,如果你能够忍受其缓慢的速度,那么也可以用于数据加密。DSA 算法则一般只用于数字签名。
跟对称加密算法相似,OpenSSL 也使用EVP 技术对不同功能的非对称加密算法进行封装,提供了统一的API 接口。如果使用非对称加密算法进行密钥交换或者密钥加密,则使用EVP_Seal 和EVP_Open 进行加密和解密;如果使用非对称加密算法进行数字签名,则使用EVP_Sign 和EVP_Verify 进行签名和验证。
信息摘要算法
OpenSSL 实现了5 种信息摘要算法,分别是MD2、MD5、MDC2、SHA(SHA1)和RIPEMD。SHA 算法事实上包括了SHA 和SHA1 两种信息摘要算法,此外,OpenSSL 还实现了DSS 标准中规定的两种信息摘要算法DSS 和DSS1。
OpenSSL 采用EVP_Digest 接口作为信息摘要算法统一的EVP 接口,对所有信息摘要算法进行了封装,提供了代码的重用性。
密钥和证书管理
密钥和证书管理是PKI 的一个重要组成部分,OpenSSL 为之提供了丰富的功能,支持多种标准。
首先,OpenSSL 实现了