1 #include <openssl/sha.h>
15 void SHA256::encode(
const string& decodedString,
string& encodedString) {
16 hash((
const uint8_t*)decodedString.data(), decodedString.size(), encodedString);
19 void SHA256::encode(
const vector<uint8_t>& decodedData,
string& encodedString) {
20 hash(decodedData.data(), decodedData.size(), encodedString);
23 inline void SHA256::hash(
const uint8_t* data,
size_t size,
string& encodedString) {
26 unsigned char hash[SHA256_DIGEST_LENGTH];
29 SHA256_Update(&sha256, data, size);
30 SHA256_Final(
hash, &sha256);
31 char outputBuffer[SHA256_DIGEST_LENGTH * 2 + 1];
32 outputBuffer[SHA256_DIGEST_LENGTH * 2] = 0;
33 for (int64_t i = 0; i < SHA256_DIGEST_LENGTH; i++) {
34 snprintf(outputBuffer + (i * 2), 3,
"%02x",
hash[i]);
36 encodedString = string(outputBuffer, SHA256_DIGEST_LENGTH * 2);
static void hash(const uint8_t *data, size_t size, string &encodedString)
Hashes data to SHA256 string.
static const string encode(const string &decodedString)
Encodes an string to SHA256 string.