我正在使用此代码对密码进行哈希处理:
hash_hmac('sha512', $password . $salt, $hmac_key);
4096 位对于密钥是否足够?
谢谢!
对于密码哈希?当然。只要足够长的盐就足够了。
您需要意识到,您在这里使用哈希的目的是什么。您正在对密码进行哈希处理,因此如果有人掌握了这些哈希值,他们就无法从中推断出原始密码。我们使用盐,因此基于暴力破解和彩虹表的攻击效果较差,并且我们为每个密码设置唯一的盐,以便使用相同密码的两个用户具有不同的哈希值。HMAC 在这里没有增加任何安全性,除了充当一种盐。
当您使用散列函数作为消息/文件的数字签名时,HMAC 是相关的(例如, php.net 在他们的下载页面中使用它的方式)。您使用 HMAC 密钥,以便只有知道此密钥的人才能验证散列内容的真实性(与 php.net 下载相比,每个人都可以检查下载文件的 md5),并且更难欺骗产生相同内容的消息散列(您需要知道密钥,以了解要定位的散列)