EVP_XXX函数
evp(envelope信封)是openssl中用于非对称算法的 高级加密函数,EVP 库为加密函数提供了高级接口。- EVP_SealXXX和EVP_OpenXXX提供公钥加密和解密,以实现数字"信封"。
- EVP_DigestSignXXX和EVP_DigestVerifyXXX函数实现数字签名和消息身份验证代码 (MAC)。
- 对称加密可用EVP_EncryptXXX函数。 EVP_DigestXXX函数提供消息摘要。
EVP_PKEYXXX函数
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编码和解码。