---依據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函數時,軟件編譯的時候會自己主動將該實現模塊連接進去。