23

Crypto++ を使用して std::string から SHA256 ハッシュを生成し、std::string を出力する方法の例が必要です。私はそれを理解できないようです。私が試したことはすべて、無効な出力をもたらします。

interjayの回答後の新しいコードは次のとおりです。

string SHA256(string data)
{
    byte const* pbData = (byte*) data.data();
    unsigned int nDataLen = data.size();
    byte abDigest[CryptoPP::SHA256::DIGESTSIZE];

    CryptoPP::SHA256().CalculateDigest(abDigest, pbData, nDataLen);

    return string((char*)abDigest);
}

SHA256("A") の出力。は

ここに画像の説明を入力

これを読み取り可能な形式に変換するにはどうすればよいですか?

interjay's answer のおかげで、最終的なハッシュを生成できました。

4

3 に答える 3

24

これは、次を使用して base64 文字列を出力しますCryptoPP::Base64Encoder

#include "sha.h"
#include "filters.h"
#include "base64.h"

std::string SHA256HashString(std::string aString){
    std::string digest;
    CryptoPP::SHA256 hash;

    CryptoPP::StringSource foo(aString, true,
    new CryptoPP::HashFilter(hash,
      new CryptoPP::Base64Encoder (
         new CryptoPP::StringSink(digest))));

    return digest;
}
于 2011-08-12T20:16:27.960 に答える