对于那些经验丰富的人的快速提问...
我想使用一次操作发生在当前时间的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]);