MD5 строка const char * не правильно, но почему

Я нашел рабочий пример, в котором печатается правильная сумма 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, но я не могу понять это правильно. Кто-нибудь может мне помочь с этим?

2

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]