Как вычислить хэш SHA-512 в C++ на Linux?

существует ли стандартная библиотека или обычно используемая библиотека, которая может использоваться для вычисления хэшей SHA-512 в Linux?

Я ищу библиотеку C или c++.

4 ответов


вы проверили 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);

Я использую Боцан для различных криптографических целей. Он имеет много видов алгоритмов SHA(-512).

когда я смотрел на криптографические библиотеки C++, я также нашел Crypto++. Стиль API Botan был более простым для меня, но обе эти библиотеки являются твердыми и зрелыми.


Регистрация код. Она полностью портативная и не требует дополнительных конфигураций. Только 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])

Он также имеет много вариантов настройки производительности.