0

我必须计算文件的 md5 哈希值。我成功地找到了库来做这件事,他们在屏幕上打印散列。我必须在 txt 文件上打印哈希,但我有一些问题。它只打印 00 而不是所有 32 位哈希。这是打印功能。我只添加了打开文件并在其上打印的行,其余的函数来自库并且工作正常,因为在屏幕上以正确的方式打印了哈希。

似乎是 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);
}
4

1 回答 1

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]);
}
于 2012-04-22T12:35:22.547 回答