如何在 Linux 上的 C++ 中计算 SHA-512 哈希?

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/5125041/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-05 03:02:05  来源:igfitidea点击:

How to calculate a SHA-512 hash in C++ on Linux?

c++clinuxhashsha512

提问by Nathan Osman

Is there a standard library or commonly used library that can be used for calculating SHA-512 hashes on Linux?

是否有标准库或常用库可用于在 Linux 上计算 SHA-512 哈希?

I'm looking for a C or C++ library.

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

采纳答案by Zimbabao

Have you checked OpenSSL. I myself have not used it but documentation says it supports it.

您是否检查过OpenSSL。我自己没有使用过它,但文档说它支持它。

Here is list of few more implementations.

这是更多实现的列表

Example code

示例代码

 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);

回答by Zimbabao

I have had great success with this:

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

Secure Hash Algorithm (SHA)

安全散列算法 (SHA)

BSD license. It covers SHA-1, SHA-224, SHA-256, SHA-384, and SHA-512. It has neat helper functions reduce steps for simple cases:

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])

It also has a lot of performance tuning options.

它还具有许多性能调优选项。

回答by Tamás Szelei

I'm using Botanfor various cryptographic purposes. It has many kinds of SHA(-512) algorithms.

我将Botan用于各种加密目的。它有多种 SHA(-512) 算法。

When I was looking at C++ crypto libraries I also found Crypto++. The style of the Botan API was more straightforward for me, but both of these libraries are solid and mature.

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

回答by polfosol ?_?

Check this code. It is fully portable and does not need any additional configurations. Only STL would suffice. You'll just need to declare

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

#include "sha512.hh"

and then use the functions

然后使用函数

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

whenever you need them. Their return value is std::string

每当您需要它们时。它们的返回值是std::string