openssl之EVP系列之3---EVP_Encrypt支持的对称加密算法列表
---根据openssl doc\crypto\EVP_EncryptInit.pod和doc\ssleay.txt cipher.doc部分翻译和自己的理解写成
作者:DragonKing
Mail: wzhah@263.net
发布于:http://openssl.126.com 之openssl专业论坛
版本:openssl-0.9.7
openssl对称加密算法的格式都以函数形式提供,其实该函数返回一个该算法的结构体,其形式一般如下:
EVP_CIPHER* EVP_*(void)
在openssl中,所有提供的对称加密算法长度都是固定的,有特别说明的除外。下面对这些算法进行分类的介绍,首先介绍一下算法中使用的通用标志的含义。
【通用标志】
ecb——电子密码本(Electronic Code Book)加密方式
cbc——加密块链接(Cipher Block Chaining)加密方式
cfb——64位加密反馈(Cipher Feedback)加密方式
ofb——64位输出反馈(Output Feedback)加密方式
ede——该加密算法采用了加密、解密、加密的方式,第一个密钥和最后一个密钥是相同的
ede3——该加密算法采用了加密、解密、加密的方式,但是三个密钥都不相同
【NULL算法】
函数:EVP_enc_null()
说明:该算法不作任何事情,也就是没有进行加密处理
【DES算法】
函数:EVP_des_cbc(void), EVP_des_ecb(void), EVP_des_cfb(void), EVP_des_ofb(void)
说明:分别是CBC方式、ECB方式、CFB方式以及OFB方式的DES算法
【使用两个密钥的3DES算法】
函数:EVP_des_ede_cbc(void), EVP_des_ede(), EVP_des_ede_ofb(void),EVP_des_ede_cfb(void)
说明:分别是CBC方式、ECB方式、CFB方式以及OFB方式的3DES算法,算法的第一个密钥和最后一个密钥相同,事实上就只需要两个密钥
【使用三个密钥的3DES算法】
函数:EVP_des_ede3_cbc(void), EVP_des_ede3(), EVP_des_ede3_ofb(void), EVP_des_ede3_cfb(void)
说明:分别是CBC方式、ECB方式、CFB方式以及OFB方式的3DES算法,算法的三个密钥都不相同
【DESX算法】
函数:EVP_desx_cbc(void)
说明:CBC方式DESX算法
【RC4算法】
函数:EVP_rc4(void)
说明:RC4流加密算法。该算法的密钥长度可以改变,缺省是128位。
【40位RC4算法】
函数:EVP_rc4_40(void)
说明:密钥长度40位的RC4流加密算法。该函数可以使用EVP_rc4和EVP_CIPHER_CTX_set_key_length函数代替。
【IDEA算法】
函数:EVP_idea_cbc(),EVP_idea_ecb(void), EVP_idea_cfb(void), EVP_idea_ofb(void)
说明:分别是CBC方式、ECB方式、CFB方式以及OFB方式的IDEA算法。
【RC2算法】
函数:EVP_rc2_cbc(void), EVP_rc2_ecb(void), EVP_rc2_cfb(void), EVP_rc2_ofb(void)
说明:分别是CBC方式、ECB方式、CFB方式以及OFB方式的RC2算法,该算法的密钥长度是可变的,可以通过设置有效密钥长度或有效密钥位来设置参数来改变。缺省的是128位。
【定长的两种RC2算法】
函数:EVP_rc2_40_cbc(void), EVP_rc2_64_cbc(void)
说明:分别是40位和64位CBC模式的RC2算法。
【Blowfish算法】
函数:EVP_bf_cbc(void), EVP_bf_ecb(void), EVP_bf_cfb(void), EVP_bf_ofb(void)
说明:分别是CBC方式、ECB方式、CFB方式以及OFB方式的Blowfish算法,该算法的密钥长度是可变的
【CAST算法】
函数:EVP_cast5_cbc(void), EVP_cast5_ecb(void), EVP_cast5_cfb(void), EVP_cast5_ofb(void)
说明:分别是CBC方式、ECB方式、CFB方式以及OFB方式的CAST算法,该算法的密钥长度是可变的
【RC5算法】
函数:EVP_rc5_32_12_16_cbc(void), EVP_rc5_32_12_16_ecb(void), EVP_rc5_32_12_16_cfb(void), EVP_rc5_32_12_16_ofb(void)
说明:分别是CBC方式、ECB方式、CFB方式以及OFB方式的RC5算法,该算法的密钥长度可以根据参数“number of rounds”(算法中一个数据块被加密的次数)来设置,缺省的是128位密钥,加密次数为12次。目前来说,由于RC5算法本身实现代码的限制,加密次数只能设置为8、12或16。
【128位AES算法】
函数:EVP_aes_128_ecb(void),EVP_aes_128_cbc(void),PEVP_aes_128_cfb(void),EVP_aes_128_ofb(void)
说明:分别是CBC方式、ECB方式、CFB方式以及OFB方式的128位AES算法
【192位AES算法】
函数:EVP_aes_192_ecb(void),EVP_aes_192_cbc(void),PEVP_aes_192_cfb(void),EVP_aes_192_ofb(void)
说明:分别是CBC方式、ECB方式、CFB方式以及OFB方式的192位AES算法
【256位AES算法】
函数:EVP_aes_256_ecb(void),EVP_aes_256_cbc(void),PEVP_aes_256_cfb(void),EVP_aes_256_ofb(void)
说明:分别是CBC方式、ECB方式、CFB方式以及OFB方式的256位AES算法
上述的算法是0.9.7版本支持的所有对称加密算法,关于算法的详细情况,请参看该算法的资料了或本系列后续的文章。