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