【发布时间】:2017-07-21 12:27:07
【问题描述】:
对于那些更有经验的人的快速问题...
我想使用 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 校验和的摘要形式,以十六进制表示。
【问题讨论】:
-
malloc接受一个参数。发布您实际使用的代码。 -
你期望它有什么价值?
-
您认为哪里有代码可以打印 256 位值?
-
如果您真的需要对时间戳进行哈希处理,为什么还要费心将数字 cur_time 转换为字符串? asctime 中的任何不一致都会给您带来问题。为什么不直接散列 cur_time 呢?您可能需要考虑的一件事是字节顺序,您不能让哈希值根据机器架构而改变。
-
@vergessen 您可能应该发布一个新问题。尽可能详细地描述您的用例和要求,并询问 SHA256 是否是一个好的解决方案,如果是的话,要散列什么以及如何处理散列。
标签: c