2012-07-17 91 views
1

我需要在.net中爲AES對稱加密生成一個256位密鑰。我從來沒有找到任何關於如何從頭開始的說明。我的意思是,我不打算將此密鑰從用戶密碼中刪除。我只是想生成一個密碼安全的密鑰來使用。爲對稱數據加密導出多用密鑰

最好的選擇,因爲據我所知,是簡單地使用.NET類RNGCryptoServiceProvider

這是生成加密安全密鑰的最佳方法?

+0

另一種評論:通常多次使用或單次使用並不太適用於密鑰生成。它有更多的事要做*你如何使用密鑰。例如。如果您使用靜態IV的CBC加密,則不應多次使用密鑰。換句話說,鍵的屬性是相同的,這就是你如何處理它們,從而帶來不同。 – 2012-07-17 20:46:19

+0

(1)通過「多次使用」改變了語言,使其更加清晰(2)我只是說我將使用密鑰進行多重加密,並使用多個IV。所以我的印象是,這是適當的術語。謝謝 – crawfish 2012-07-17 21:02:17

+0

許多用途當然是正確的術語,它只是沒有什麼區別應該如何生成密鑰。 – 2012-07-17 21:08:34

回答

1

「最佳方法」取決於您的確切要求。

如果您只需要32個隨機字節,那麼RNGCryptoServiceProvider就可以。您必須做出安排,確保密鑰在您的目的地可用,通常使用RSA或其他非對稱加密方法。如果您爲存檔目的而需要它,那麼您需要一種安全存儲它的方法。在您不再需要它之後,您還需要確保它被安全刪除。

或者,您可以使用Key Derivation Function,同時考慮將傳輸,存儲和刪除應用於KDF參數。

+0

您能否解釋一下如何使用非對稱加密安全地獲取目標密鑰? – crawfish 2012-07-17 21:25:49

+0

非對稱加密具有公鑰和私鑰。這些必須事先建立。有用的部分是公鑰不需要保密。不太有用的部分是它通常比對稱加密慢很多,因此將其用於小密鑰而不是大數據文件。使用目標的公鑰加密您的密鑰。他們將能夠使用他們的私鑰對其進行解密。在互聯網上,以及在計算器上有很多描述。 – rossum 2012-07-17 22:41:22