可能重複:
password hashing散列密碼
什麼是散列密碼的最佳做法?
我做了以下內容:
$salt = 12345;
$hash = hash("sha256", $_POST['password'] . $salt);
是否有更好的解決方案和安全性?
可能重複:
password hashing散列密碼
什麼是散列密碼的最佳做法?
我做了以下內容:
$salt = 12345;
$hash = hash("sha256", $_POST['password'] . $salt);
是否有更好的解決方案和安全性?
我個人建議使用bcrypt。主要原因是它很慢。這有助於減緩對散列的攻擊。如果你使用密碼加鹽,如果你的哈希列表落入了錯誤的手中,這會使事情變得更加困難。
下面是詳細解釋了關於它的文章:
http://codahale.com/how-to-safely-store-a-password/
它在另一個答案我要找的引用,但我會用這樣的: http://www.openwall.com/phpass/
的這個問題,其他版本:How can I store my users' passwords safely?
這種方法是安全的。使用salt值大大增加了破解加密的複雜性。爲了最佳實踐,我會使用大量的鹽值。
這會更好地使用多輪。 PHP中的crypt()函數實現了這一點。
唾沫密碼哈希的一點是鹽對於每個存儲的哈希應該是不同的。這樣,攻擊者不能對所有散列使用單個預計算哈希字典(他需要爲每個鹽值單獨使用一個字典)。另外,具有相同密碼的兩個用戶將不會具有相同的散列值,因此查看散列列表的人將無法判斷用戶的密碼是否相同。
This other SO question有更多信息。
一個恆定的鹽是沒用的。相反,你應該使用一些有趣的東西,比如用戶名或時間戳。
鹽的整點是爲了防止生日攻擊,在這裏他們散列一串不含鹽的密碼(或一個常數鹽),並與存儲的散列進行比較。
另外一個較慢的哈希算法總是最好增加暴力時間。
不是每個哈希使用相同的鹽值。 – Wyzard 2011-04-18 15:50:16
我認爲這是一個給定的:) – GordyD 2011-04-18 15:55:10