MD5字符串const char *不正确,但为什么

时间:2018-03-16 10:34:17

标签: c++ md5sum

我找到了一个工作示例,其中文本的正确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 with给出正确的输出 printf&#34; hoi&#34; |的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字符有关,但我无法正确使用它。有人可以帮我吗?

0 个答案:

没有答案