简体   繁体   中英

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

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

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

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

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

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

#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

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

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.

I have had great success with this:

Secure Hash Algorithm (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:

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

It also has a lot of performance tuning options.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM