我需要在.net中爲AES對稱加密生成一個256位密鑰。我從來沒有找到任何關於如何從頭開始的說明。我的意思是,我不打算將此密鑰從用戶密碼中刪除。我只是想生成一個密碼安全的密鑰來使用。爲對稱數據加密導出多用密鑰
最好的選擇,因爲據我所知,是簡單地使用.NET類RNGCryptoServiceProvider
這是生成加密安全密鑰的最佳方法?
我需要在.net中爲AES對稱加密生成一個256位密鑰。我從來沒有找到任何關於如何從頭開始的說明。我的意思是,我不打算將此密鑰從用戶密碼中刪除。我只是想生成一個密碼安全的密鑰來使用。爲對稱數據加密導出多用密鑰
最好的選擇,因爲據我所知,是簡單地使用.NET類RNGCryptoServiceProvider
這是生成加密安全密鑰的最佳方法?
「最佳方法」取決於您的確切要求。
如果您只需要32個隨機字節,那麼RNGCryptoServiceProvider就可以。您必須做出安排,確保密鑰在您的目的地可用,通常使用RSA或其他非對稱加密方法。如果您爲存檔目的而需要它,那麼您需要一種安全存儲它的方法。在您不再需要它之後,您還需要確保它被安全刪除。
或者,您可以使用Key Derivation Function,同時考慮將傳輸,存儲和刪除應用於KDF參數。
另一種評論:通常多次使用或單次使用並不太適用於密鑰生成。它有更多的事要做*你如何使用密鑰。例如。如果您使用靜態IV的CBC加密,則不應多次使用密鑰。換句話說,鍵的屬性是相同的,這就是你如何處理它們,從而帶來不同。 – 2012-07-17 20:46:19
(1)通過「多次使用」改變了語言,使其更加清晰(2)我只是說我將使用密鑰進行多重加密,並使用多個IV。所以我的印象是,這是適當的術語。謝謝 – crawfish 2012-07-17 21:02:17
許多用途當然是正確的術語,它只是沒有什麼區別應該如何生成密鑰。 – 2012-07-17 21:08:34