我用下面的代码来解密文件:加密++异常调用messageEnd
FileSource fe(fileUrl.c_str(), false,
new AuthenticatedDecryptionFilter(decryptor, new FileSink(
std::string(fileUrl).c_str()), CryptoPP::AuthenticatedDecryptionFilter::THROW_EXCEPTION | CryptoPP::AuthenticatedDecryptionFilter::MAC_AT_END));
size_t BLOCK_SIZE = 16384;
while (remaining && !fe.SourceExhausted()) {
const unsigned int req = STDMIN(remaining, BLOCK_SIZE);
fe.Pump(req);
fe.Flush(false);
remaining -= req;
}
fe.MessageEnd();
如果我尝试这样做没有fe.MessageEnd(),我的解密文件是16个字节短。所以我想我需要调用MessageEnd()来解决这个问题。 但如果我叫MessageEnd()我得到Follwing异常:BufferedTransformation:此对象不允许输入
我在末尾丢失了16个字节的明文。稍后我会研究你的选择。 – Ben
感谢您的回答,您使用fe.Flush(true)的第一个选项似乎工作正常。 – Ben