Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/245.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我应该为php';s hmac,与SHA512一起使用时?_Php_Hmac - Fatal编程技术网

我应该为php';s hmac,与SHA512一起使用时?

我应该为php';s hmac,与SHA512一起使用时?,php,hmac,Php,Hmac,我正在使用此代码散列密码: hash_hmac('sha512', $password . $salt, $hmac_key); 4096位对于一个密钥来说足够吗 谢谢大家! 用于密码哈希?当然只要足够长的时间,盐就足够了 您需要意识到,在这里使用哈希的目的是什么。您正在对密码进行哈希运算,这样,如果有人掌握了这些哈希运算,他们就无法从中推断出原始密码。我们使用SALT,因此暴力攻击和基于彩虹表的攻击效果较差,并且我们使SALT对每个密码都是唯一的,因此使用相同密码的两个用户具有不同的哈希值。

我正在使用此代码散列密码:

hash_hmac('sha512', $password . $salt, $hmac_key);
4096位对于一个密钥来说足够吗


谢谢大家!

用于密码哈希?当然只要足够长的时间,盐就足够了

您需要意识到,在这里使用哈希的目的是什么。您正在对密码进行哈希运算,这样,如果有人掌握了这些哈希运算,他们就无法从中推断出原始密码。我们使用SALT,因此暴力攻击和基于彩虹表的攻击效果较差,并且我们使SALT对每个密码都是唯一的,因此使用相同密码的两个用户具有不同的哈希值。HMAC除了作为一种盐的作用外,并没有增加任何安全性


当您使用散列函数作为消息/文件的数字签名时(例如,该方法),HMAC是相关的。您使用HMAC密钥,这样只有知道该密钥的人才能验证散列内容的真实性(与php.net下载不同,在php.net下载中,每个人都可以检查下载文件的md5),并使伪造生成相同散列的消息变得更加困难(您需要知道该密钥,以了解要针对的散列)

我想我对你说的盐感到困惑。只要我把盐煮得足够长,就可以了?@pythonscript:我在回答中稍微扩展了一下话题谢谢你的帮助;现在,我为每个不同的用户生成一个随机salt(通过/dev/uradom),并对其进行加密和存储。当我对他们输入的密码进行哈希运算以进行比较时,就会用到它。由于HMAC在这里没有添加任何安全性,我可能会放弃它,以节省每次需要散列密码时获取密钥的开销。再次感谢你!