[英]PHP: What is the difference between password_hash and hash_hmac?
我一直在阅读有关password_hash和hash_hmac的PHP文档,但是我很难弄清两者之间的区别。
两者的目的仅仅是使用不同的算法来创建哈希吗? 如果是这样,我只使用其中之一,还是同时使用两者?
$hash = hash_hmac('sha512', $password, $salt);
$hash = password_hash($salt.$password, PASSWORD_DEFAULT);
HMAC是密钥哈希算法。 给定一个秘密密钥和一条消息,它将生成一个哈希。 这对于验证消息的完整性特别有用:如果生成包含哈希的令牌,则可以验证该令牌是使用您的秘密密钥创建的,因此值得信赖。 例如,您可以将其与JWT实现一起使用。
password_hash
用于自动创建加盐的密码哈希。 与键控哈希不同,盐渍哈希包括附加的明文,唯一盐。 盐的目的是确保如果将相同的密码哈希两次,则由于对其应用了随机盐,它将具有不同的哈希值。 这样可以防止攻击者使用预先计算的哈希并识别数据库中重复的密码。
是的,它们都创建哈希,但是它们具有不同的用例。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.