hash_equals
可防止时序攻击的字符串比较
<h2>适用 PHP 版本</h2>
<p>PHP 5.6.0 及以上版本</p>
<h2>函数说明</h2>
<p>hash_equals 函数用于比较两个哈希值(字符串)。与直接使用 "==" 或 "===" 操作符不同,hash_equals 函数不会受到哈希碰撞或时间上的变化影响,因此在进行安全性较高的字符串比较时,hash_equals 是更为安全的选择。</p>
<h2>函数语法</h2>
<p>hash_equals(string $known_string, string $user_string): bool
$known_hash = hash('sha256', 'password123');
$user_input = hash('sha256', 'password123');
if (hash_equals($known_hash, $user_input)) {
echo "Password match!";
} else {
echo "Password does not match.";
}
在这个示例中,我们首先计算了一个已知的哈希值($known_hash),然后将用户输入的密码进行哈希($user_input)。使用 hash_equals 函数比较这两个哈希值,如果它们匹配,输出“Password match!”;如果不匹配,则输出“Password does not match.”。