《OpenSSL3.0学习之二十五 EVP简介》

🍧名字

evp - 高级加密函数

🍦描述

EVP 库为加密函数提供了高级接口。

EVP_SealXXX和EVP_OpenXXX提供公钥加密和解密,以实现数字"信封"。

EVP_DigestSignXXX和EVP_DigestVerifyXXX函数实现数字签名和消息身份验证代码 (MAC)。

对称加密可用EVP_EncryptXXX函数。 EVP_DigestXXX函数提供消息摘要。

EVP_PKEYXXX函数为非对称算法提供了高级接口。EVP_PKEYs 可以使用EVP_PKEY_fromdata页面上描述的函数与特定算法的私钥相关联, 或者可以使用EVP_PKEY_keygen生成新密钥。EVP_PKEYs可以使用EVP_PKEY_eq进行比较,也可以使用EVP_PKEY_print_private进行打印。EVP_PKEY_todata可用于将密钥转换回OSSL_PARAM数组。

EVP_PKEY函数支持全系列非对称算法操作:

    密钥协议 参见EVP_PKEY_derive 签名和验证 参见EVP_PKEY_sign、 EVP_PKEY_verify和EVP_PKEY_verify_recover。但是,请注意,这些函数不执行要签名的数据的摘要。因此, 通常您会使用EVP_DigestSignInit函数来实现此目的。 加密和解密 参阅EVP_PKEY_encrypt 和EVP_PKEY_decrypt。但是,请注意,这些函数仅执行加密和解密。由于公钥加密是一项昂贵的操作, 通常您会使用EVP_SealInit和EVP_OpenInit函数将加密的消息包装在"数字信封"中。 基于密码的加密提供支持 EVP_BytesToKey函数为基于密码的加密提供了一些有限的支持。仔细选择参数将提供与 PKCS#5 PBKDF1兼容的实现。但是,新应用程序通常不应使用此方法(例如,首选 PCKS#5 中的 PBKDF2)。 base 64 编码和解码 EVP_EncodeXXX和EVP_DecodeXXX函数实现base64编码和解码。
经验分享 程序员 微信小程序 职场和发展