hash_equals 是否比较使用 `sha512` 散列的字符串?
Does hash_equals compare strings hashed with `sha512`?
我需要在数据库中存储一个令牌,并将用户提供的令牌与数据库令牌相匹配,我正在使用 sha512
作为散列令牌。我将这两个标记与简单的 ==
运算符进行比较。
if($usertoken == $dbtoken) {
}
但有人建议我改用 hash_equals()
,因为它可以防止定时攻击(额外的安全性),bcrypt
用于散列令牌。所以我只想知道 hash_equals 比较字符串与 sha512
散列还是我必须使用 bcrypt?
尽管名称如此,但此函数与散列无关。
它比较两个字符串是否相等,仅此而已。您可以为它提供两个包含任意字符序列的字符串,无论它们代表纯文本密码还是使用您选择的算法散列的密码,无论是 bcrypt
还是 sha512
.
我需要在数据库中存储一个令牌,并将用户提供的令牌与数据库令牌相匹配,我正在使用 sha512
作为散列令牌。我将这两个标记与简单的 ==
运算符进行比较。
if($usertoken == $dbtoken) {
}
但有人建议我改用 hash_equals()
,因为它可以防止定时攻击(额外的安全性),bcrypt
用于散列令牌。所以我只想知道 hash_equals 比较字符串与 sha512
散列还是我必须使用 bcrypt?
尽管名称如此,但此函数与散列无关。
它比较两个字符串是否相等,仅此而已。您可以为它提供两个包含任意字符序列的字符串,无论它们代表纯文本密码还是使用您选择的算法散列的密码,无论是 bcrypt
还是 sha512
.