我必须为文件计算md5哈希值。我成功地找到了库,并在屏幕上打印哈希。 我必须在txt文件上打印哈希,但是我有一些问题。它只打印所有32位散列的00 intead。这是打印功能。我只添加行来打开文件并在其上打印,其余的功能来自库并且工作正常,因为在屏幕上哈希以正确的方式打印。
似乎是fprintf和%02x的某些问题“。谢谢。
static void MDPrint (mdContext)
MD5_CTX *mdContext;
{
int i;
FILE *fp;
if((fp=fopen("userDatabase.txt", "ab"))==NULL) printf("Error while opening the file..\n");
else {
for (i = 0; i < 16; i++)
printf ("%02x", mdContext->digest[i]);
fprintf(fp, "%02x", mdContext->digest[i]);
}
fclose(fp);
}
答案 0 :(得分:2)
你的问题在这里;
for (i = 0; i < 16; i++)
printf ("%02x", mdContext->digest[i]);
fprintf(fp, "%02x", mdContext->digest[i]);
由于没有花括号,因此只有printf行位于循环内。您需要添加大括号以使两条线都在循环内;
for (i = 0; i < 16; i++)
{
printf ("%02x", mdContext->digest[i]);
fprintf(fp, "%02x", mdContext->digest[i]);
}