【问题标题】:How to use sha256 in c++ from cryptopp如何在cryptopp的c ++中使用sha256
【发布时间】:2021-06-13 22:17:15
【问题描述】:

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

我正在尝试重现我在 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));

【问题讨论】:

  • 您的输入非常不同,在 python 中,您将大数字转换为大端字节,在 c++ 中,您有该数字的 ascii 表示
  • 不,我认为来自 pycrypto++ 的 Integer 可以解决这个问题。因为我在 python 和 c++ 中使用了其他东西。它按预期工作。如果我的假设是错误的,请告诉我这样做的正确方式是什么。谢谢
  • 啊,我没有发现您正在执行转换,您使用的是 HexDecoder 但您的字符串不是十六进制的,我怀疑只需将 testAtestB 转换为指针就可以了你想要什么
  • 看起来将您的字符串直接传递给Integer 会起作用:cryptopp.com/docs/ref/…
  • 谢谢你,因为我提到了这不是问题。我相信问题出在 vHash 函数内部,因为它应该以正确的方式计算 sha256,但找不到任何关于它的示例,哈哈。

标签: c++ sha256 pycrypto


【解决方案1】:

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

为了计算正确的sha256,先更新再调用calculate函数,方法如下。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-17
    • 1970-01-01
    • 1970-01-01
    • 2014-11-02
    • 1970-01-01
    相关资源
    最近更新 更多