C++ CryptDecrypt 错误 NTE_BAD_DATA

C++ CryptDecrypt error NTE_BAD_DATA

我能够在加密后解密一个包含 "This is a plaintext" 的小文本文件。但是,当我尝试解密更大的文件时,我得到了 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;
}

因为你读了232字节。如果文本很小(少于 232 字节),则您解密一个(最终)块。如果文本足够大 - 您解密块,缓冲区的大小应该是块大小的倍数。