2016-03-30 228 views
0

我想使用下面的代碼加密和解密文件。 https://msdn.microsoft.com/en-us/library/windows/desktop/aa382044(v=vs.85).aspx 加密鏈接僅被賦予此鏈接。 當我試圖解密一個文件。這已使用所給的鏈接加密。它只解密一個數據塊不完整的文件。 如果我更改了dwBlockLen = 1000000 - 1000000%ENCRYPT_BLOCK_SIZE;那麼它的工作原理仍然是一次一塊。解密和加密文件

我需要讓它在裏面工作,而代碼中給出的語句。以便它一次讀取數據塊並對其進行解密。

+0

那麼,什麼阻止你?這聽起來像一個*問題*,不是一個問題。 – WhozCraig

回答

0

更改dwBlockLen的值不是必需的(不會解決問題)。 dwBlockLen的值確定在時間讀取的數據量。 while循環用於讀取完整的源文件。退出while循環的條件是:

if(Amount of data read from file < dwBlockLen) 

這意味着沒有更多的數據要讀取和循環退出。

您必須在下面的代碼中調試條件`if(dwCount < = dwBlockLen)',很可能在讀取源文件時出現問題。

// Decrypt the source file, and write to the destination file. 
    bool fEOF = false; 
    do 
    { 
     //----------------------------------------------------------- 
     // Read up to dwBlockLen bytes from the source file. 
     // ... 
     if(dwCount <= dwBlockLen) 
     { 
      fEOF = TRUE; 
     } 

     //----------------------------------------------------------- 
     // Decrypt the block of data. 
     // ... 
     //----------------------------------------------------------- 
     // Write the decrypted data to the destination file. 
     // ... 
     //----------------------------------------------------------- 
     // End the do loop when the last block of the source file 
     // has been read, encrypted, and written to the destination 
     // file. 
    }while(!fEOF); 
+0

需要檢查條件if(dwCount == dwBlockLen)否則使其爲false,以便crydecrypt函數會知道這是解密的最後一個塊 –