Je tente de générer le SHA512 d'une chaîne codée en base64 avec Crypto ++.Éviter le retour à la ligne lors de l'utilisation de l'encodeur Crypto ++ Base64
Mon entrée d'échantillon est la suivante: test123
base64: dGVzdDEyMw==
SHA512 de B64 (attendu):
f78fa0aa79abd53b8181c5d21bdeb882bf45cd462a6e6e1b5043417de1800626
ed2a51b1a56626e9b9558da66a2f609d31db76bd88e80afbb7b03cda518b207d
SHA512 de B64 (non prévu): 9f012fff26c89f2650f7446a37e80ba6466d69ffc77bb9ffc8c09ab779b24a23bb6a2f3c28512668ebca8628303ab5a31067d930cd1af60c745a2c34e5b4b1d2
calcul de 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());
Si je laisse de base64 et calculer le SHA512 directement, je reçois le hachage correct. Par conséquent, le calcul ne peut pas être complètement faux.
Mais pourquoi cela ne fonctionne-t-il pas avec base64?