openssl之EVP系列之1---算法封装
---根据openssl doc\crypto\EVP.pod翻译和自己的理解写成
(作者:DragonKing, Mail: wzhah@263.net ,发布于:http://openssl.126.com 之openssl专业论坛,版本:openssl-0.9.7)
EVP系列的函数定义包含在"evp.h"里面,这是一系列封装了openssl加密库里面所有算法的函数。通过这样的统一的封装,使得只需要在初始化参数的时候做很少的改变,就可以使用相同的代码但采用不同的加密算法进行数据的加密和解密。
EVP系列函数主要封装了三大类型的算法,要支持全部这些算法,请调用OpenSSL_add_all_algorithms函数,下面分别就其结构作一个简单的介绍。
【公开密钥算法】
函数名称:EVP_Seal*...*,EVP_Open*...*
功能描述:该系列函数封装提供了公开密钥算法的加密和解密功能,实现了电子信封的功能。
相关文件:p_seal.c,p_open.c
【数字签名算法】
函数名称:EVP_Sign*...*,EVP_Verify*...*
功能描述:该系列函数封装提供了数字签名算法和功能。
相关文件:p_sign.c,p_verify.c
【对称加密算法】
函数名称:EVP_Encrypt*...*
功能描述:该系列函数封装提供了对称加密算法的功能。
相关文件:evp_enc.c,p_enc.c,p_dec.c,e_*.c
【信息摘要算法】
函数名称:EVP_Digest*...*
功能描述:该系列函数封装实现了多种信息摘要算法。
相关文件:digest.c,m_*.c
【信息编码算法】
函数名称:EVP_Encode*...*
功能描述:该系列函数封装实现了ASCII码与二进制码之间的转换函数和功能。
相关文件:encode.c
注意:
自从出现engin版本以后,所有对称加密算法和摘要算法可以用ENGINE模块实现的算法代替。如果ENGINE模块实现的对称加密和信息摘要函数被注册为缺省的实现算法,那么当使用各种EVP函数时,软件编译的时候会自动将该实现模块连接进去。