对于那些经验丰富的人的快速提问...

我想使用一次操作发生在当前时间的openssl函数来计算SHA256校验和。我的代码包括以下内容:

time_t cur_time = 0;
char t_ID[40];
char obuf[40];
char * timeBuf = malloc(sizeof(char) * 40 + 1);

sprintf(timeBuf, "%s", asctime(gmtime(&cur_time)));
SHA256(timeBuf, strlen(timeBuf), obuf);
sprintf(t_ID, "%02x", obuf);


但是,当我在调试语句中打印出t_ID的值时,它看起来像是“ de54b910”。我在这里想念什么?


编辑它可以解决我在malloc上的错别字,也可以说我期望以十六进制形式看到sha256校验和的摘要形式。

最佳答案

由于obuf是一个数组,因此打印其值会使它衰减到指针,并打印存储该数组的内存地址的值。编写明智的代码以打印256位值。

也许像这样:

for (int i = 0; i < 32; ++i)
    printf("%02X", obuf[i]);

10-04 13:32