2012-06-29 59 views
3

我有一個桌面應用程序,其中用戶有一個加密的ZIP文件庫。配置文件保存主密碼以解密這些ZIP。這個想法是,用戶輸入他們在安裝應用程序以打開程序時選擇的程序密碼,並且該密碼用於解密存儲在配置文件中的主密碼。使用密碼的VB.NET加密

所有這些安全性的要點在於,即使有人訪問了硬盤和用戶的Windows帳戶,但他們仍然無法在沒有密碼的情況下進入ZIP文件,理想情況下,

爲了驗證程序的密碼在我使用C#哈希代碼從這裏(轉換爲VB)輸入的用戶(在頁面的底部):

http://crackstation.net/hashing-security.htm

到目前爲止好。我們只存儲程序密碼的哈希值,所以黑客無法通過查看配置文件來讀取它。

現在,我想實現加密,發現這裏:

http://msdn.microsoft.com/en-us/library/yx129kfs.aspx

實際問題:

所以這些被存儲在配置文件中,以純文本以下用於在運行時使用用戶輸入的程序密碼解密ZIP主密碼?

  • 用於生成加密密鑰的鹽(這可以是相同的 用於散列的口令與上述鹽?)

  • 初始化向量(IV)?

  • 加密密鑰? (可能不是......)(MS中的k1爲例)

  • 解密密鑰? (在MS的例子K2)

在MS的例子,他們已經得到了加密和解密都混亂了起來......我已經得到了很多件,但我不知道如何把他們一起...

更新

我讀過的AES加密比Triple DES加密MS在其上面的例子使用更安全。看到我們在zip文件上使用AES,對ZIP文件密碼使用AES也是很好的選擇。

所以,我怎麼能結合這個AES例如:

http://msdn.microsoft.com/en-us/library/system.security.cryptography.aescryptoserviceprovider.aspx#Y2300

隨着PBKDF2生成加密密鑰?

+0

回覆:更新:你有什麼麻煩? PBKDF給你一個字節數組。 – SLaks

回答

1

您需要存儲PBKDF函數的鹽和迭代計數(它不能與用於散列密碼的鹽相同)。

關鍵是PBKDF的結果,對於給定的salt和迭代計數,它是固定的。

您還需要存儲IV。
如果您願意,您可以使用第三個(存儲)鹽作爲IV的密碼(PBKDF)散列。

+0

在MS的例子中,我沒有看到迭代計數被用於解密的地方......這怎麼適合? – John

+0

「如果您願意,您可以使用第三個(存儲)鹽作爲IV的密碼(PBKDF)散列。」這是如何提供額外的安全性的? – John

+0

@ John#1:正如myIterations所說的,他們依賴於默認設置。 – SLaks