c - 如何在 OpenSSL 中找到 EVP_MD、EVP_MD_CT 等的定义?
问题描述
我正在使用 OpenSSL。我想使用HMAC算法计算消息的 mac。HMAC的定义如下:
unsigned char *HMAC(const EVP_MD *evp_md, const void *key,
int key_len, const unsigned char *d, int n,
unsigned char *md, unsigned int *md_len);
现在,我发现 HMAC 的第一个参数是EVP_MD。我注意到很多函数都返回这个参数。我在哪里可以找到 EVP_MD 在其参考或源代码中的内容。
const EVP_MD *EVP_md_null(void);
const EVP_MD *EVP_md2(void);
const EVP_MD *EVP_md5(void);
const EVP_MD *EVP_sha(void);
const EVP_MD *EVP_sha1(void);
const EVP_MD *EVP_dss(void);
const EVP_MD *EVP_dss1(void);
const EVP_MD *EVP_mdc2(void);
const EVP_MD *EVP_ripemd160(void);
const EVP_MD *EVP_sha224(void);
const EVP_MD *EVP_sha256(void);
const EVP_MD *EVP_sha384(void);
const EVP_MD *EVP_sha512(void);
EVP_MD 和 EVP_MD_CTX 之间有什么关系?
解决方案
EVP_MD
结构包含散列算法的描述。您列出的函数返回指向特定哈希的这些结构之一的指针。您可以将其中一个作为第一个参数传递给HASH
.
例如,如果您想使用 SHA256 进行散列,您可以调用EVP_sha256
并将其返回值传递给HASH
.
推荐阅读
- django - 在Django中获取具有最大字段的对象的ID
- php - Facebook click-id missing (fbclid)
- html - items between the hr tag in HTML. Top HR tag is not aligning properly
- c - Wrong O_CREAT definition
- php - Create SQL query for Wordpress Multisite
- python-3.x - FileNotFoundError: [WinError 3] 使用两个连接字符串时
- go - 如何使用 gorilla mmux 对所有路由应用相同的处理程序
- python - ValueError 需要帮助:找不到子字符串
- python - pyspark 中的 PandasDataframe to_csv 是否存储在火花驱动程序内存中?
- java - 检查 getClass() 给出的未知类是否是某个类