2016-03-30 23 views
0

以下のコードを使用してファイルの暗号化と復号化を試みています。 https://msdn.microsoft.com/en-us/library/windows/desktop/aa382044(v=vs.85).aspx 暗号化リンクはこのリンクにのみ指定されています。 ファイルを解読しようとしています。それは与えられたリンクを使用して暗号化されています。データの完全ブロックではないブロックを復号化するだけです。 dwBlockLen = 1000000 - 1000000%ENCRYPT_BLOCK_SIZEを変更した場合、それは動作しますが、一度に1ブロックです。ファイルの復号化と暗号化

私はコード内で与えられたdo while文の中で動作させる必要があります。そのため、データのブロックを一度に読み取って解読するようにします。

+0

だから何があなたを停止するのですか?それは疑問ではなく、*問題*のように思えます。 – WhozCraig

答えて

0

dwBlockLenの値を変更する必要はありません(問題は解決しません)。 dwBlockLenの値は、で読み取られたデータの量をで決定します。 Whileループは、完全なソースファイルを読み込むために存在します。 whileループを終了する条件は次のとおりです。

これは、読み取るデータがなくなり、ループが終了することを意味します。

以下のコードで `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

条件が(dwCount == dwBlockLen)でない場合はfalseにして、crydecrypt関数がこれを解読する最後のブロックであることがわかるようにする必要があります –