Php 关键还是咸杂烩?

Php 关键还是咸杂烩?,php,security,hash,Php,Security,Hash,哪种方法更安全?它的缺点是什么 // Using a salt. $keyed_hash = hash_hmac("sha512", $string.$salt); // Using a key. $keyed_hash = hash_hmac("sha512", $string, $key); 你想干什么?一般来说,它们有不同的用途,但如果您计划使用它们存储密码,它们大致相当。如果salt是随机的(必须是随机的),而key是随机的,那么最终结果将是相似的。如果您对所有内容使用相同的密钥(或

哪种方法更安全?它的缺点是什么

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

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

你想干什么?一般来说,它们有不同的用途,但如果您计划使用它们存储密码,它们大致相当。如果salt是随机的(必须是随机的),而key是随机的,那么最终结果将是相似的。如果您对所有内容使用相同的密钥(或相同的salt),那么安全级别将显著降低。您必须单独存储密钥或salt,但如果有人看到它,这并不重要(只要您使用的是64位随机数)。 HMAC计算比简单的SHA512计算更密集。如果你的目的是让攻击者更加努力,那就更好了。但是简单的带有64位salt的SHA512对于大多数用途来说已经足够了


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

您甚至没有描述您想使用这些哈希值做什么。这两种方法都不是密码的好主意。如果使用hmac存储密码,则不应使用$key部分,否则为什么要使用hmac?这个问题是有效的,因为它会询问哪种方法更好。答案将得到事实的支持(因此它不是基于意见的),并且它包含了所有需要的信息。2014年,我不确定我会不会如此愉快地回答。两者的计算要求都不足以成为黑客的主要威慑力量。还有其他相关的问题将提供迭代哈希等的答案。请谨慎。