![](/img/trans.png)
[英]Is using RijndaelManaged object to secure passwords enough and where to store keys
[英]Using GetHashCode to “secure” users passwords
我工作的公司簽訂了一份大型訂單處理系統的支持合同。 作為初始系統審核的一部分,我注意到存儲在數據庫中的密碼實際上是密碼的哈希碼。
本質上:
string pwd = "some pasword";
string securePwd = pwd.GetHashCode();
我的問題是,這有多安全?
我對此感到不舒服,但我對 GetHashCode 的工作原理知之甚少。 我更喜歡使用像 MD5 hash 這樣的東西,但如果我在浪費時間,我就不會打擾。
它不僅不安全,而且可能會發生變化:
http://netrsc.blogspot.com/2008/08/gethashcode-differs-on-systems.html
GetHashValue 為給定輸入返回的值在過去發生了變化。
無法保證在應用程序的不同執行之間它甚至是相同的。
我建議改用BCrypt 。 正如其他人已經說過的那樣,使用 GetHashCode 作為密碼並不是一個好主意。
GetHashCode 絕對不是為了以這種方式使用而設計的,因為實現不保證不同對象的不同 hash 返回。 這意味着多個密碼可能會產生相同的 hash。 也不能保證在不同版本的 .NET 框架上返回相同的 hash 值,這意味着升級可能會產生不同的 hash 對於相同的字符串,使您的密碼無法使用。
建議您一推就使用鹽漬 hash 甚至 MD5。 您可以輕松地將其切換到Security.Cryptography命名空間中的內容。
正如其他人所說,GetHashCode 不是為您想要做的事情而設計的。 有一篇關於如何安全處理用戶密碼的非常好的文章。
總結這篇文章,您需要使用相對較慢的自適應散列方案,例如bcrypt ,或者斯坦福安全遠程密碼協議。 我建議前者。 當然,您還應該使用鹽。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.