代码解析 static const EVP_MD *OpensslGetMdAlgoFromString(const char *mdName) { if (strcmp(mdName, "SHA1") == 0) { return EVP_sha1(); } else if (strcmp(mdName, "SHA224") == 0) { return EVP_sha224(); } else if (strcmp(mdName, "SHA256") == 0) { return EVP_sha256(); } else if (strcmp(mdName, "SHA384") == 0) { return EVP_sha384(); } else if (strcmp(mdName, "SHA512") == 0) { return EVP_sha512(); } else if (strcmp(mdName, "MD5") == 0) { return EVP_md5(); } return NULL; }
时间: 2024-04-27 21:22:58 浏览: 52
深入理解c++中char*与wchar_t*与string以及wstring之间的相互转换
这段代码定义了一个静态函数 `OpensslGetMdAlgoFromString`,用于从字符串中获取 OpenSSL 库中的哈希算法实例。
该函数接收一个字符串参数 `mdName`,表示要获取的哈希算法名称,然后通过字符串比较来判断要获取的哈希算法类型,最终返回对应的哈希算法实例的指针。
在函数内部,首先通过 `strcmp` 函数比较字符串,如果匹配了其中一个哈希算法名称,就返回对应的哈希算法实例的指针,否则返回 `NULL`。
以上代码中使用了 OpenSSL 库中的 EVP 接口来获取哈希算法实例,其中 `EVP_sha1()`、`EVP_sha224()`、`EVP_sha256()`、`EVP_sha384()`、`EVP_sha512()` 和 `EVP_md5()` 函数分别用于获取对应的哈希算法实例。
阅读全文