我在 Visual Studio 2010 中构建了 crypto++ 8.4 并制作了一些测试代码。
它在 'Win32|Debug' 中工作正常,但在 'Win32|Release' hash.CalculateDigest 中会引发异常。

    string source = "I am a programmer.";

    CryptoPP::SHA512 hash;
    CryptoPP::byte digest[CryptoPP::SHA512::DIGESTSIZE];
    hash.CalculateDigest(digest, (const CryptoPP::byte*)source.c_str(), source.length());

    string result;
    CryptoPP::HexEncoder encoder;

    encoder.Attach(new CryptoPP::StringSink(result));
    encoder.Put(digest, sizeof(digest));
发生异常的位置如下。 (sha.cpp)
c++ - 加密++库中的SHA512哈希抛出异常-LMLPHP
我做错了什么?

最佳答案

我发现了一个明确的异常(exception)情况。
如果 'hash' 被声明为指针而不是局部变量,则不会引发异常。

CryptoPP::SHA512 * hash = new CryptoPP::SHA512;
我不知道为什么会发生这种情况,但是在 SHA512 的情况下,我怀疑 VS 2010 中的 cryptopp 中存在内存管理问题。

关于c++ - 加密++库中的SHA512哈希抛出异常,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/65963888/

10-15 23:38