Я нашел рабочий пример, в котором печатается правильная сумма MD5 текста ‘hoi’. Сейчас я пытаюсь поместить это в функцию, но не могу заставить ее вывести правильную сумму MD5.
Следующий код — это то, что я сделал:
void md5_string (const char *input) {
unsigned char digest[MD5_DIGEST_LENGTH];
MD5((unsigned char*)&input, strlen(input), (unsigned char*)&digest);
char mdString[33];
for(int i = 0; i < 16; i++)
sprintf(&mdString[i*2], "%02x", (unsigned int)digest[i]);
printf("md5 digest: %s\n", mdString);
}
но это дает: 7165f036e29c8043961ab1eb606302f5 в качестве вывода.
Правильный вывод приведен с кодом ниже, а также в Bash с
принтф «хой» | md5sum
unsigned char digest[MD5_DIGEST_LENGTH];
char string1[] = "hoi";
MD5((unsigned char*)&string1, strlen(string1), (unsigned char*)&digest);
char mdString[33];
for(int i = 0; i < 16; i++)
sprintf(&mdString[i*2], "%02x", (unsigned int)digest[i]);
printf("md5 digest: %s\n", mdString);
это дает: 4216455ceebbc3038bd0550c85b6a3bf
Я уверен, что это как-то связано с моей мудростью указателя или конечными символами \ 0, но я не могу понять это правильно. Кто-нибудь может мне помочь с этим?
Задача ещё не решена.
Других решений пока нет …