openssl之EVP系列之1---算法封装

时间:2022-06-02 15:06:44
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函数时,软件编译的时候会自己主动将该实现模块连接进去。