如何使用Crypto ++禁用AES / GCM的哈希验证?

时间:2019-03-02 22:20:19

标签: c++ crypto++ aes-gcm

我正在尝试解密先使用Zlib压缩然后使用AES / GCM加密的数据。我遇到的问题是我的程序最初运行良好。

当我使用调试器逐步调试它时,Zlib解压缩器实际上完美地放大了所有数据。更重要的是,当我查看缓冲区中的膨胀数据时,它拥有所有数据。当我放入MessageEnd时,麻烦就来了。当我执行MessageEnd时,它将队列的最后一部分放入HashVerificationFilter中,然后引发HashVerificationFailed异常。

出于我的目的,我根本不需要检查数据的完整性,只需要在膨胀缓冲区中保存数据即可。问题是,膨胀的缓冲区是一个受保护的变量,我不想修改Crypto ++以满足我的需要。我正在寻找一种方法1.从ZlibDecompressor中提取当前的膨胀缓冲区,或者2.完全禁用哈希验证。

这是我的代码:

CryptoPP::GCM<CryptoPP::AES>::Decryption gcmDecryption;
gcmDecryption.SetKeyWithIV(key, sizeof(key), iv, 12);
CryptoPP::ZlibDecompressor* inflator = new CryptoPP::ZlibDecompressor(new CryptoPP::StringSink(decryptedtext));
CryptoPP::AuthenticatedDecryptionFilter df(gcmDecryption, inflator);
df.Put(rawData, sizeof(rawData));
df.MessageEnd(); // Exception thrown in this call

0 个答案:

没有答案