我可以在加密后用“这是一个明文”解密一个小文本文件。但是,当我尝试解密更大的文件时,我最终会出现 NTE_BAD_DATA 的错误。
任何人都可以指出可能出现的问题?
以下是整个代码的摘录部分。
#define ENCRYPT_BLOCK_SIZE 256
dwBlockLen = 1000 - 1000 % ENCRYPT_BLOCK_SIZE;
dwBufferLen = dwBlockLen;
if (!ReadFile(hSourceFile, pbBuffer, dwBlockLen, &dwCount, NULL)) {
handleError("Error reading from source file.\n", GetLastError());
goto Exit_decryptFile;
}
if (dwCount <= dwBlockLen) {
fEOF = TRUE;
}
if (!CryptDecrypt(hKey, 0, fEOF, 0, pbBuffer, &dwCount)) {
handleError("Error during CryptDecrypt.\n", GetLastError());
goto Exit_decryptFile;
}
答案 0 :(得分:0)
因为你读了232个字节。如果文本很小(少于232字节),则解密一个(最终)块。如果文本足够大 - 你解密块,缓冲区的大小应该是块大小的倍数。