可能重複:
What algorithm should I use to hash passwords into my database?哪種算法首選用於散列密碼C#?
我是新來這個散列密碼。我閱讀哈希+鹽使密碼非常安全。但仍然困惑,應該使用哪種散列算法,因爲有很多類似的。
MD5CryptoServiceProvider
SHA1Managed
SHA256Managed
等
我如何決定哪一個是爲我好或所有人都是平等的。我能盲目地接受任何人嗎?
可能重複:
What algorithm should I use to hash passwords into my database?哪種算法首選用於散列密碼C#?
我是新來這個散列密碼。我閱讀哈希+鹽使密碼非常安全。但仍然困惑,應該使用哪種散列算法,因爲有很多類似的。
MD5CryptoServiceProvider
SHA1Managed
SHA256Managed
等
我如何決定哪一個是爲我好或所有人都是平等的。我能盲目地接受任何人嗎?
快速的哈希算法如MD5,SHA-1,甚至SHA-256 不很好的選擇哈希密碼,因爲他們太多太快,可以蠻力強行太容易了。我們可以在2013年用普通硬件計算每秒約3 Giga SHA-1 values。
相反,您可以使用像BCrypt或PBKDF2這樣的慢速密鑰派生函數。 CSharp原生支持PBKDF2,它可以用Rfc2898DeriveBytes類實現,例如你可以找到here。
也易於使用的是這BCrypt library。通常人們不確定使用這樣的庫是否安全,但我不認爲有反對使用它的論點。只要庫返回正確的值並正確生成鹽,它應該沒問題,因爲安全來自算法而不是實現。
感謝您的回答。我會試試這個。 –
@DJ添加了用於PBKDF2和BCrypt的實現示例的鏈接。 – martinstoeckli
提到的重複並沒有真正回答這個問題。答案也沒有提出合適的算法,也沒有說明如何在CSharp中使用它們。 – martinstoeckli