如何在Linux上用C ++计算SHA-512散列?

有没有一个标准的库或常用的库,可用于在Linux上计算SHA-512散列?

我正在寻找一个C或C ++库。

Solutions Collecting From Web of "如何在Linux上用C ++计算SHA-512散列?"

你检查过OpenSSL吗? 我自己没有使用它,但文档说它支持它。

这里是几个更多的实现列表。

示例代码

md = EVP_get_digestbyname("sha512"); EVP_MD_CTX_init(&mdctx); EVP_DigestInit_ex(&mdctx, md, NULL); EVP_DigestUpdate(&mdctx, mess1, strlen(mess1)); EVP_DigestUpdate(&mdctx, mess2, strlen(mess2)); EVP_DigestFinal_ex(&mdctx, md_value, &md_len); EVP_MD_CTX_cleanup(&mdctx); 

我使用Botan进行各种加密。 它有许多种SHA(-512)算法。

当我在查看C ++加密库时,我也发现了Crypto ++ 。 Botan API的风格对我来说更直接,但是这两个库都是稳定和成熟的。

检查这个代码 。 它是完全便携的,不需要任何额外的配置。 只有STL就足够了。 你只需要声明

 #include "sha512.hh" 

然后使用这些功能

 sw::sha512::calculate("SHA512 of std::string") // hash of a string, or sw::sha512::file(path) // hash of a file specified by its path, or sw::sha512::calculate(&data, sizeof(data)) // hash of any block of data 

每当你需要他们。 他们的返回值是std::string

我在这方面取得了巨大的成功:

安全散列算法(SHA)

BSD许可证。 它涵盖了SHA-1,SHA-224,SHA-256,SHA-384和SHA-512。 它具有巧妙的帮助功能减少简单情况下的步骤:

 SHA256_Data(const sha2_byte* data, size_t len, char digest[SHA256_DIGEST_STRING_LENGTH]) 

它也有很多性能调优选项。