2015-10-07 20 views
0

我正在使用CryptoApi加密文件(非對稱加密)。每個東西都可以,但是當文件很大時,它不能對它進行加密。我搜索並發現我必須逐塊加密。 CryptEncrypt函數中的Final標誌除了最後一個塊必須是假的。在C++中使用cryptoapi加密大文件

我知道以上的所有概念,但我不知道如何才能實現它們。我的意思是我不知道如何讀取,加密和逐塊寫入。 你能給我一個真實的代碼示例。

更新:

我用這個網站的代碼:http://blogs.msdn.com/b/alejacma/archive/2008/01/28/how-to-generate-key-pairs-encrypt-and-decrypt-data-with-cryptoapi.aspx

+0

能告訴你,你會如何加密文件小一些代碼?也鏈接到API文檔。 –

+0

@AidanGomez第一篇文章已更新 – user3864147

回答

1

我寫這個解決方案對程序員誰將會在未來這個問題:

在這個環節已經顯示出如何加密大文件(逐塊):

https://msdn.microsoft.com/en-us/library/windows/desktop/aa382358%28v=vs.85%29.aspx

注意:當你想使用上述代碼時必須改變一些東西

1)在加密時,塊大小必須設置爲128 - 11(DWORD dwBlockLen = 128 - 11

2)解密,塊大小必須設置爲128(DWORD dwBlockLen = 128

在Win 7測試的兩種

0

試着這麼做:

final_flag <- false 
repeat 
    this_block <- read_next_block(file) 
    if (is_EoF(file)) {final_flag <- true } 
    encrypt(this_block, final_flag) 
until (final_flag == true) 

我不知道有足夠的瞭解C++的文件系統處理編寫工作檢查文件的結尾,但其中應該有一個文件。