2011-11-26 55 views
1

哪種方法更安全,有哪些缺點?鍵控或鹽漬散列?

// Using a salt. 
$keyed_hash = hash_hmac("sha512", $string.$salt); 

// Using a key. 
$keyed_hash = hash_hmac("sha512", $string, $key); 
+1

你甚至沒有描述你想要使用這些哈希值。對於密碼也不是一個好主意。 – CodesInChaos

+0

如果您使用hmac進行密碼存儲,則應該使用$ key部分,否則爲什麼要使用hmac? – rook

+3

這個問題適用於SO,因爲它詢問哪種方法更好。答案將得到事實支持(因此它不是基於意見的)並且它具有所需的全部信息。 –

回答

3

你在做什麼?總的來說,它們有不同的用途,但是如果您打算使用它們來存儲密碼,則它們大致相同。如果鹽是隨機的(因爲它必須是),最終的結果是相似的,關鍵是隨機的。如果你對所有的東西(或相同的鹽)使用相同的密鑰,那麼安全級別會急劇下降。您必須分別存儲密鑰或鹽,但是如果有人看到它(只要您使用的是64位隨機數)就沒有關係。HMAC計算比簡單的SHA512計算計算密集得多。如果你的目的是讓攻擊者更努力工作,那就更好了。但是對於大多數用途來說,使用64位鹽的更簡單的SHA512就足夠了。

請注意,在2012年底,將會選擇新的SHA3算法; NIST正處於競爭的後期階段,即選擇一種新算法來替代SHA2算法,其中SHA512是一個樣本。

+0

2014年,我不確定我會非常輕率地回答。計算上的要求也不足以成爲黑客的主要威懾手段。還有其他相關的問題將提供迭代哈希等的答案。要小心。 –