phoemur
(usa Debian)
Enviado em 20/05/2018 - 15:07h
Porque você não usa OpenSSL ?
É bem provável que esteja presente em quase toda distribuição que você for usar.
O único porém é que o SHA-3 só está presente à partir do OpenSSL 1.2.0 e a maior parte das instalações é da versão 1.1.0.
Aqui usando SHA-2 (SHA512)
teste.cpp
#include <algorithm>
#include <iomanip>
#include <iostream>
#include <iterator>
#include <string>
#include <sstream>
#include <openssl/sha.h>
std::string sha512sum(const std::string& input)
{
unsigned char digest[SHA512_DIGEST_LENGTH];
// compute hash
SHA512(reinterpret_cast<unsigned const char*>(input.c_str()),
input.size(),
&digest[0]);
// convert byte digest to hex representation
std::stringstream ss;
for(int i = 0; i < SHA512_DIGEST_LENGTH; i++) {
ss << std::hex << std::setw(2) << std::setfill('0') << static_cast<int>(digest[i]);
}
return ss.str();
}
int main()
{
using namespace std;
string a {"hello world"};
cout << a << "\n\nsha512 hash: " << sha512sum(a) << endl;
return 0;
}
* Não se esqueça de -lcrypto para linkar com a biblioteca:
g++ -o teste teste.cpp -Wall -O2 -lcrypto