【问题标题】:Printing a hash in C在 C 中打印哈希
【发布时间】:2016-11-01 07:20:32
【问题描述】:

我正在尝试在 C 中打印 SHA256 哈希,但是当我使用下面显示的 for 循环时,打印哈希的唯一方法是在 printf 中添加换行符。理想情况下,我想将其全部打印在一行上。

void enclave_main()
{
    char string[] = "Hello World";
    int x;

    unsigned char digest[SHA256_DIGEST_LENGTH];
    SHA256_CTX sha256;
    SHA256_Init(&sha256);
    SHA256_Update(&sha256, string, strlen(string));
    SHA256_Final(digest, &sha256);

    for(x = 0; x < SHA256_DIGEST_LENGTH; x++)
        printf("%02x\n", digest[x]);

    sgx_exit(NULL);
}

【问题讨论】:

  • fflush(stdout);?
  • 仅在最后一个字节之后打印换行符,而不是在每个字节之后。或者刷新输出流。

标签: c hash hex byte sha256


【解决方案1】:

标准输出(通常)是行缓冲的,这意味着在缓冲区满之前不会将输出刷新到终端您发送换行符您使用fflush() 手动刷新流。

最简单的做法是在循环后打印换行符:

for(x = 0; x < SHA256_DIGEST_LENGTH; x++)
        printf("%02x", digest[x]);
putchar( '\n' );

【讨论】:

  • 感谢您的解决方案。它在我使用 fflush() 时有效。在 for 循环之后打印换行符不起作用。它只是打印一个没有哈希的新行。请注意,我是在模拟器中执行此操作的,所以可能存在问题。
猜你喜欢
  • 2022-12-10
  • 2015-07-16
  • 1970-01-01
  • 2014-11-30
  • 2017-09-30
  • 2016-12-18
  • 1970-01-01
  • 2012-10-23
  • 1970-01-01
相关资源
最近更新 更多