Вычисление md5 с помощью openssl
Есть такой код использующий openssl
void md5( const unsigned char* value, unsigned int size, unsigned char* md_value, unsigned int* md_len)
{
const ::EVP_MD* md = ::EVP_get_digestbyname("MD5");
EVP_MD_CTX* mdctx = ::EVP_MD_CTX_create();
::EVP_MD_CTX_init(mdctx);
::EVP_DigestInit_ex(mdctx, md, NULL);
::EVP_DigestUpdate(mdctx, value, size);
::EVP_DigestFinal_ex(mdctx, md_value, md_len);
::EVP_MD_CTX_destroy(mdctx);
}
int main(int argc, char* argv[])
{
char value[] = "qwerty";
unsigned char md_value[EVP_MAX_MD_SIZE];
unsigned int mdLen;
md5( (unsigned char*)value, sizeof(value) - 1, md_value, &mdLen);
for (int i = 0; i < mdLen; ++i)
std::cout << std::showbase << std::hex << (int)md_value[i] << " ";
std::cout << std::endl;
return 0;
}
В проекте падает с segmentation fault на функции ::EVP_DigestInit_ex(mdctx, md, NULL); в тестовом проекте почему-то работает нормально.
Компилятор g++ 7.5.0. Версия libssl-dev: 1.1.1-1ubuntu2.1~18.04.5 Версия libssl1.1 1.1.1-1ubuntu2.1~18.04.5
Почему может быть такое поведение?