2013-01-23 33 views
2

可能重複:
What algorithm should I use to hash passwords into my database?哪種算法首選用於散列密碼C#?

我是新來這個散列密碼。我閱讀哈希+鹽使密碼非常安全。但仍然困惑,應該使用哪種散列算法,因爲有很多類似的。

MD5CryptoServiceProvider SHA1Managed SHA256Managed

我如何決定哪一個是爲我好或所有人都是平等的。我能盲目地接受任何人嗎?

+0

提到的重複並沒有真正回答這個問題。答案也沒有提出合適的算法,也沒有說明如何在CSharp中使用它們。 – martinstoeckli

回答

3

MD5

在1996年,一個缺陷與MD5的設計中發現,雖然它是 沒有一個明確的致命弱點,密碼學家開始推薦使用其他算法的 s,比如SHA-1,後來發現它也是脆弱的。

SHA1

在2005年,密碼專家發現了SHA-1的攻擊表明 算法可能不適合繼續使用

SHA2足夠安全這SHA256是一種類型的在撰寫本文時沒有已知的漏洞。

+0

感謝您的回答。我將使用SHA2。 –

3

快速的哈希算法如MD5,SHA-1,甚至SHA-256 很好的選擇哈希密碼,因爲他們太多太快,可以蠻力強行太容易了。我們可以在2013年用普通硬件計算每秒約3 Giga SHA-1 values

相反,您可以使用像BCrypt或PBKDF2這樣的慢速密鑰派生函數。 CSharp原生支持PBKDF2,它可以用Rfc2898DeriveBytes類實現,例如你可以找到here

也易於使用的是這BCrypt library。通常人們不確定使用這樣的庫是否安全,但我不認爲有反對使用它的論點。只要庫返回正確的值並正確生成鹽,它應該沒問題,因爲安全來自算法而不是實現。

+0

感謝您的回答。我會試試這個。 –

+0

@DJ添加了用於PBKDF2和BCrypt的實現示例的鏈接。 – martinstoeckli