C ++:CryptEncrypt无法加密大文件

时间:2017-10-04 09:40:32

标签: c++ winapi encryption

使用Windows API CryptEncrypt加密大文件时出现问题。目前只能加密小文本文件。 我不知道如何运行MSDN中提到的CryptEncrypt。

有人能给我一些帮助吗?

bool fEOF = FALSE;

do {
    if (!ReadFile(hSourceFile, pbBuffer, dwBlockLen, &dwCount, NULL)) {
        handleError("Error reading source.\n", GetLastError());
        goto Exit_encryptFile;
    }

    if (dwCount < dwBlockLen) {
        fEOF = TRUE;
    }

    //Encrypt File

    if (!CryptEncrypt(hKey, NULL, fEOF, 0, pbBuffer, &dwCount, dwBufferLen)) {
        handleError("Error during CryptEncrypt.\n", GetLastError());
        wchar_t err[256];
        memset(err, 0, 256);
        FormatMessageW(FORMAT_MESSAGE_FROM_SYSTEM, NULL, GetLastError(),
            MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), err, 255, NULL);
        int msgboxID = MessageBoxW(NULL,
            err,
            (LPCWSTR)L"☠",
            MB_OK);
        goto Exit_encryptFile;
    }

1 个答案:

答案 0 :(得分:0)

我认为我通过将块大小增加到256来解决了这个问题,并且它开始加密而没有任何错误。 我会在编码之后看看是否可以解密它。