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 13:25:41 浏览: 98
这段代码的作用是根据传入的字符串参数 mdName,返回相应的 OpenSSL 中的哈希算法函数指针。具体来说,如果 mdName 为 "SHA1",则返回 EVP_sha1 函数的函数指针;如果 mdName 为 "SHA224",则返回 EVP_sha224 函数的函数指针;以此类推,如果 mdName 为 "MD5",则返回 EVP_md5 函数的函数指针。如果传入的 mdName 不是这些字符串之一,则返回 NULL。这段代码主要用于 OpenSSL 中对哈希算法的选择和调用。
相关问题
代码解析 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; }
这段代码定义了一个静态函数 `OpensslGetMdAlgoFromString`,用于从字符串中获取 OpenSSL 库中的哈希算法实例。
该函数接收一个字符串参数 `mdName`,表示要获取的哈希算法名称,然后通过字符串比较来判断要获取的哈希算法类型,最终返回对应的哈希算法实例的指针。
在函数内部,首先通过 `strcmp` 函数比较字符串,如果匹配了其中一个哈希算法名称,就返回对应的哈希算法实例的指针,否则返回 `NULL`。
以上代码中使用了 OpenSSL 库中的 EVP 接口来获取哈希算法实例,其中 `EVP_sha1()`、`EVP_sha224()`、`EVP_sha256()`、`EVP_sha384()`、`EVP_sha512()` 和 `EVP_md5()` 函数分别用于获取对应的哈希算法实例。
static const EVP_MD *OpensslGetMacAlgoFromString(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(); } return NULL; }
这段代码是用来获取 OpenSSL 库中某个消息摘要算法的函数指针。函数的参数是一个字符串,表示需要获取的消息摘要算法的名称,函数会根据这个字符串返回对应的消息摘要算法函数指针。如果传入的字符串不属于 OpenSSL 支持的消息摘要算法,函数会返回 NULL。
这段代码中使用了 OpenSSL 库中的 EVP 算法接口,通过调用 EVP_sha1()、EVP_sha224()、EVP_sha256()、EVP_sha384()、EVP_sha512() 函数来获取对应的消息摘要算法函数指针,从而实现了对多种消息摘要算法的支持。
阅读全文