MD4 openssl核心倾销

时间:2013-08-13 12:03:02

标签: c openssl digest message-digest

我最近尝试在C:MD4 hash with openssl, save result into char array中使用openssl进行MD4哈希处理。我想再次使用EVP_Digest。但是使用这段代码我会把核心倾倒 - 为什么?

#include <string.h>
#include <stdio.h>
#include <openssl/md4.h>

int main()
{
    unsigned char digest[MD4_DIGEST_LENGTH];
    char string[] = "hello world";

    EVP_Digest(string, strlen(string), digest, NULL, EVP_md4(), NULL);

    char mdString[MD4_DIGEST_LENGTH*2+1];
    int i;
    for( i = 0; i < MD4_DIGEST_LENGTH; i++)
         sprintf(&mdString[i*2], "%02x", (unsigned int)digest[i]);
    printf("md4 digest: %s\n", mdString);

    return 0;
}

1 个答案:

答案 0 :(得分:2)

您正在将NULL指针传递给EVP_Digest作为输出长度变量。您需要执行以下操作:

unsigned int digestLen;
EVP_Digest(string, strlen(string), digest, &digestLen, EVP_md4(), NULL);

即使您不使用输出长度(您应该而不是依赖于常量),您仍然需要为EVP_Digest函数提供有效的内存位置以将大小值写入。

另外,您应该#include <openssl/evp.h>