Недавно я попытался сделать хеширование MD4 с помощью openssl в C: MD4 hash with openssl, save result into char array. Я хотел бы сделать это снова, но теперь использую EVP_Digest
. Но с этим кодом Im получает ядро сбрасывает - почему?MD4 openssl core dumped
#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;
}
Действительно ли пропускать NULL как 'hsize'? Я ожидал бы, что 'EVP_Digest' будет разыменовывать это, чтобы отметить длину данных, которые он пишет, на' digest' – simonc
@simonc: Когда вы посмотрите на источник openssl, есть фрагмент кода, где они используют его, как я, поэтому Я использовал его так же, как и авторы. Но спасибо, проверит. – yak
@simonc: yup, его вроде я написал = он ничего не изменил к сожалению :( – yak