首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MD4 openssl核心转储

MD4 openssl核心转储
EN

Stack Overflow用户
提问于 2013-08-13 20:03:02
回答 1查看 122关注 0票数 1

我最近尝试在C:MD4 hash with openssl, save result into char array中使用openssl进行MD4散列。我想再做一次,但现在使用EVP_Digest。但是有了这个代码,我得到了核心转储-为什么?

代码语言:javascript
复制
#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;
}
EN

回答 1

Stack Overflow用户

发布于 2013-08-14 06:12:32

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

代码语言:javascript
复制
unsigned int digestLen;
EVP_Digest(string, strlen(string), digest, &digestLen, EVP_md4(), NULL);

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

此外,您应该使用#include <openssl/evp.h>

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18208612

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档