2011-04-18 159 views
1

可能重複:
password hashing散列密碼

什麼是散列密碼的最佳做法?

我做了以下內容:

$salt = 12345; 
$hash = hash("sha256", $_POST['password'] . $salt); 

是否有更好的解決方案和安全性?

回答

2

我個人建議使用bcrypt。主要原因是它很慢。這有助於減緩對散列的攻擊。如果你使用密碼加鹽,如果你的哈希列表落入了錯誤的手中,這會使事情變得更加困難。

下面是詳細解釋了關於它的文章:
http://codahale.com/how-to-safely-store-a-password/

0

這種方法是安全的。使用salt值大大增加了破解加密的複雜性。爲了最佳實踐,我會使用大量的鹽值。

+0

不是每個哈希使用相同的鹽值。 – Wyzard 2011-04-18 15:50:16

+0

我認爲這是一個給定的:) – GordyD 2011-04-18 15:55:10

0

這會更好地使用多輪。 PHP中的crypt()函數實現了這一點。

0

唾沫密碼哈希的一點是鹽對於每個存儲的哈希應該是不同的。這樣,攻擊者不能對所有散列使用單個預計算哈希字典(他需要爲每個鹽值單獨使用一個字典)。另外,具有相同密碼的兩個用戶將不會具有相同的散列值,因此查看散列列表的人將無法判斷用戶的密碼是否相同。

This other SO question有更多信息。

0

一個恆定的鹽是沒用的。相反,你應該使用一些有趣的東西,比如用戶名或時間戳。

鹽的整點是爲了防止生日攻擊,在這裏他們散列一串不含鹽的密碼(或一個常數鹽),並與存儲的散列進行比較。

另外一個較慢的哈希算法總是最好增加暴力時間。