如何在 cryptopp 的 C++ 中使用 sha256

How to use sha256 in c++ from cryptopp

首先感谢您阅读我的问题。

我正在尝试重现我在 python 中收到的内容。所以基本上我有两个数字,我试图用它们来散列。但是对于 crypto++ 库,我有点困惑。

更新和计算部分的使用方法基本不懂

我的codes

    vHash(uint8_t *X,uint8_t *Y)
{
    CryptoPP::SHA256 hash;
    byte digest[ CryptoPP::SHA256::DIGESTSIZE ];

    hash.CalculateDigest( digest, (byte*) X, 32 );
    hash.CalculateDigest( digest, (byte*) y, 32 );


    CryptoPP::HexEncoder encoder;
    std::string output;
    encoder.Attach( new CryptoPP::StringSink( output ) );
    encoder.Put( digest, sizeof(digest) );
    encoder.MessageEnd();

    std::cout << output << std::endl;

}

主要功能我正在通过

std::string expTA = "67950298974562277680845951570422977358023181305748156081323854942335052287978";
std::string expTB = "43115149028018416730354385099369257625840461867770683759285196743048111210215";

HexDecoder decoder;
decoder.Put((byte*)&exp1[0], expTA.size());
decoder.MessageEnd();

Integer testA;
testA.Decode(decoder, decoder.MaxRetrievable());

HexDecoder decoder1;
decoder1.Put((byte*)&exp1[0], expTB.size());
decoder1.MessageEnd();

Integer testB;
testB.Decode(decoder1, decoder1.MaxRetrievable());


vHash((uint8_t *)&(testA),(uint8_t *)&(testB));

我找到了解决方案,我将其粘贴在这里,以便它可能对其他人有用。

为了计算正确的sha256先更新,然后按照下面的方式调用计算函数。

hash.Update((byte*) X, 32 );
hash.CalculateDigest( digest, (byte*) y, 32 );

这是可选的,但为了确保我们正在比较的是什么,请务必输入整数值或十六进制值,您的答案将以这种方式生成。即 std::string expTA.