2012-02-01 192 views
0

我在寫一個需要64位密鑰的加密應用程序。我目前使用下面的代碼來自動生成一個密鑰。生成密鑰

Function GenerateKey() As String 
    ' Create an instance of a symmetric algorithm. The key and the IV are generated automatically. 
    Dim desCrypto As DESCryptoServiceProvider = DESCryptoServiceProvider.Create() 

    ' Use the automatically generated key for encryption. 
    Return ASCIIEncoding.ASCII.GetString(desCrypto.Key) 

End Function 

我想讓用戶創建自己的密鑰。我可以將用戶定義的密碼(字符串)轉換爲可以使用的64位密鑰嗎?

+0

你需要用你的密碼加一些鹽來生成密鑰。鹽的隨機性和隱私以及散列算法的質量至關重要。 – Jodrell 2012-02-01 09:57:03

+0

然後還有其他構造函數將這些散列字節傳入。 – weston 2012-02-01 10:19:44

+0

如果可能,你可以給我一個例子嗎? – 2012-02-01 10:23:47

回答

0

答案取決於你想要它有多安全,我不是安全專家,所以我不會就此提出建議。

雖然我確實看到了這個:http://msdn.microsoft.com/en-us/library/system.security.cryptography.rfc2898derivebytes.aspx它可以用來從字符串鍵和鹽中得出Jodrell躲過的字節數,並且比滾動自己的要好得多。

這一階段在這裏詳細描述之後可能適合其他的構造函數:http://msdn.microsoft.com/en-us/library/51cy2e75.aspx

我敢肯定,如果你搜索,你可以找到如何使用它的例子在網絡上。