我用下面的代碼來解密文件:加密++異常調用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