键控或盐渍哈希?

时间:2011-11-26 17:28:52

标签: php security hash

哪种方法更安全,有什么缺点?

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

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

1 个答案:

答案 0 :(得分:3)

你想做什么?一般而言,它们具有不同的用途,但如果您计划使用它们来存储密码,则它们大致相同。如果盐是随机的(必须是)并且密钥是随机的,则最终结果将是相似的。如果您对所有内容(或相同的盐)使用相同的密钥,则安全级别会急剧下降。你必须分别存储密钥或盐,但是如果有人看到它(无论你使用的是64位随机数)都没关系。 HMAC计算比简单的SHA512计算更加计算密集。如果你的目的是让攻击者更加努力,那就更好了。但是更简单的带有64位盐的SHA512就足以满足大多数用途。

请注意,在2012年底,将选择新的SHA3算法; NIST正处于竞争的后期阶段,选择一种新算法来取代SHA2算法,其中SHA512是一个标本。