私はcrypto ++ libを使い始めていますが、多分誤解があります。このsha 256関数で何が問題になっていますか?
私は、次のコードは、256
# include <string>
# include <iostream>
# include "cryptopp/cryptlib.h"
# include <cryptopp/sha.h>
# include <cryptopp/hex.h>
using namespace std;
string sha256_hex(const string & str)
{
byte digest[CryptoPP::SHA256::DIGESTSIZE];
CryptoPP::SHA256().CalculateDigest(digest, (byte*) &str[0], str.size());
string ret;
CryptoPP::HexEncoder encoder;
encoder.Attach(new CryptoPP::StringSink(ret));
encoder.Put(digest, sizeof(digest));
encoder.MessageEnd();
return ret;
}
int main(int argc, char *argv[])
{
auto sha256 = sha256_hex(argv[1]);
cout << "str = " << argv[1] << endl
<< "sha 256 = " << sha256_hex(sha256) << endl;
return 0;
}
悪いSHAを生成する理由は、次のコマンド
./test-sha256 hello
は、しかしこれに応じて、以下の出力
str = hello
sha 256 = DD9F20FF4F1DD817C567DE6C16915DC0A731A4DF51088F55CEF4CD2F89CF9620
を生成気付いていませんオンライン計算機enter link description here、"hello"
の正しいsha126 odordは2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824
です。
私の質問は何ですか?
さらに質問があります:StringSink
オブジェクトが使用するメモリをいつ、どのように解放する必要がありますか?事前
mg!私は間違いを認識します。ごめんなさい。あなたと他の人のおかげで – lrleon