我需要在数据库中存储令牌,并将用户提供的令牌与数据库令牌相匹配,以便我使用sha512
的哈希令牌。我将这两个令牌与简单的==
运算符进行比较。
if($usertoken == $dbtoken) {
}
但是有人建议我使用hash_equals()
,因为它会阻止时间攻击(额外的安全性),bcrypt
用于哈希令牌。所以我只想知道hash_equals是否将字符串哈希值与sha512
进行比较,或者我必须使用bcrypt?
答案 0 :(得分:2)
尽管有这个名字,但这个函数还有哈希无所事事。
它比较了两个字符串的相等性,仅此而已。您可以为它提供两个包含任意字符序列的字符串,无论它们是使用您选择的算法代表纯文本密码还是密码,无论是bcrypt
还是sha512
。