md5“%02x”fprintf

时间:2012-04-22 12:31:52

标签: hash md5 printf

我必须为文件计算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);
}

1 个答案:

答案 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]);
}