crypto++ 库中的 SHA512 哈希抛出异常
SHA512 hash in crypto++ library throws exception
我在 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)
我做错了什么?
我发现了明确的例外情况。
如果 'hash' 声明为指针而不是局部变量,则不会引发异常。
CryptoPP::SHA512 * hash = new CryptoPP::SHA512;
我不知道为什么会这样,但是对于 SHA512,我怀疑 VS 2010 中的 cryptopp 中存在内存管理问题。
我在 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)
我做错了什么?
我发现了明确的例外情况。 如果 'hash' 声明为指针而不是局部变量,则不会引发异常。
CryptoPP::SHA512 * hash = new CryptoPP::SHA512;
我不知道为什么会这样,但是对于 SHA512,我怀疑 VS 2010 中的 cryptopp 中存在内存管理问题。