gpt4 book ai didi

c - 如何使用 OpenSSL 计算 SHA512/224 和 SHA512/256 哈希值?

转载 作者:太空宇宙 更新时间:2023-11-04 04:19:40 25 4
gpt4 key购买 nike

下面是我在 C 中计算 SHA512 哈希的方法。

#include <openssl/sha.h>
#include <stdio.h>

char *calc_sha512(char *data) {
SHA512_CTX ctx;
char *md = malloc(sizeof(char)*(SHA512_DIGEST_LENGTH+1));

SHA512_Init(&ctx);
SHA512_Update(&ctx, data, strlen(data));
SHA512_Final(md, &ctx);
md[SHA512_DIGEST_LENGTH] = '\0';

return md;
}

int main() {
printf("%s\n", calc_sha512("foo"));

return 1;
}

现在,当我尝试将其转换为 512/t(512/224 或 512/256)时,它不起作用。我最初认为,为了计算 512/t 哈希,您只需将输出截断为 t 位,但进一步阅读后,它不仅截断了输出,它还具有不同的初始常数值。所以我试图找出支持它的 OpenSSL 中的任何功能?到目前为止,我已经查看了文档和头文件,在 SHA 或 EVP 下都找不到这样的方法。 OpenSSL 甚至支持 SHA512/t 哈希算法吗?它是否提供开箱即用的功能?对此的任何指示都会有所帮助。

最佳答案

正如您所注意到的,那些截断的 sha512 哈希使用不同的初始化 vector ,可能是为了避免泄露部分实际的 sha512 哈希,如果它们只是截断这些字节的话。

对 sha512_256 的支持已于几个月前在 OpenSSL 主树中实现,并且很可能会在 OpenSSL 1.1.1 中实现。

检查更新日志: https://www.openssl.org/news/changelog.txt

或者 Github 上的提交: https://github.com/openssl/openssl/commit/4bed94f0c11ef63587c6b2edb03c3c438e221604

...因此,根据您所使用的平台,您可以在不久的将来使用这些新功能,就像使用您提供的 sha512 示例一样。

关于c - 如何使用 OpenSSL 计算 SHA512/224 和 SHA512/256 哈希值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47983721/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com