std::string hash(std::string input){ CryptoPP::byte const* pbData = (CryptoPP::byte*)input.data(); unsigned int nDataLen = input.length(); CryptoPP::byte abDigest[CryptoPP::BLAKE2b::DIGESTSIZE];
CryptoPP::BLAKE2b().CalculateDigest(abDigest, pbData, nDataLen);
return std::string((char*)abDigest, CryptoPP::BLAKE2b::DIGESTSIZE);}
this the function I'm using, is it possible to specify a nondefault digest size?
std::string hash(std::string input){ CryptoPP::byte const* pbData = (CryptoPP::byte*)input.data(); unsigned int nDataLen = input.length();
CryptoPP::byte abDigest[48];
CryptoPP::BLAKE2b(48).CalculateTruncatedDigest(abDigest, 48, pbData, nDataLen);
return std::string((char*)abDigest, 48);}
std::string to_hex(const std::string& input)
{ CryptoPP::byte const* pbData = (CryptoPP::byte*)input.data(); unsigned int nDataLen = input.length();
std::string output;
CryptoPP::HexEncoder hex(new CryptoPP::StringSink(output)); hex.Put(pbData, nDataLen); hex.MessageEnd();
return output;
}
int main(int argc, char* argv[]){
std::string text = "1234567890";
std::cout << to_hex(hash(text)) std::endl;
return 0;}
BLAKE2b_384: F54AEB1C4848FB988266C7E347C15F6CB4B2D896FC7A7127074C956508192ED8C7644AC492999532207986D10EF43652BLAKE2b_320: F54AEB1C4848FB988266C7E347C15F6CB4B2D896FC7A7127074C956508192ED8C7644AC492999532BLAKE2b_256: F54AEB1C4848FB988266C7E347C15F6CB4B2D896FC7A7127074C956508192ED8BLAKE2b_224: F54AEB1C4848FB988266C7E347C15F6CB4B2D896FC7A7127074C9565BLAKE2b_192: F54AEB1C4848FB988266C7E347C15F6CB4B2D896FC7A7127BLAKE2b_128: F54AEB1C4848FB988266C7E347C15F6CBLAKE2b_64: F54AEB1C4848FB98