在 C 中打印哈希值

Mer*_*ijn 3 c hash hex byte sha256

我正在尝试在 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);
}
Run Code Online (Sandbox Code Playgroud)

Joh*_*ode 6

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

最简单的事情是在循环后打印换行符:

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