使用Crypto ++ Base64编码器时避免使用换行符

时间:2017-08-10 11:10:57

标签: c++ base64 crypto++ sha512

我试图用Crypto ++生成base64编码字符串的SHA512。

我的示例输入是:test123

Base64:dGVzdDEyMw==

B64的SHA512(预期):

f78fa0aa79abd53b8181c5d21bdeb882bf45cd462a6e6e1b5043417de1800626
ed2a51b1a56626e9b9558da66a2f609d31db76bd88e80afbb7b03cda518b207d

B64的SHA512(未预期):9f012fff26c89f2650f7446a37e80ba6466d69ffc77bb9ffc8c09ab779b24a23bb6a2f3c28512668ebca8628303ab5a31067d930cd1af60c745a2c34e5b4b1d2

SHA512计算:

byte *digest = new byte[CryptoPP::SHA512::DIGESTSIZE];
std::string encoded;
std::string test("test123");

CryptoPP::StringSource ss((byte*)test.data(), test.size(), true, new CryptoPP::Base64Encoder(new CryptoPP::StringSink(encoded))); // StringSource

// Calculate hash
CryptoPP::SHA512().CalculateDigest(digest, (byte*)encoded.data(), encoded.size());

如果我省略base64并直接计算SHA512,我会得到正确的哈希值。因此,计算不能完全错误。

但是为什么它不适用于base64?

0 个答案:

没有答案