hash_equals
(PHP 5 >= 5.6.0, PHP 7)
hash_equals — 定时攻击安全字符串比较
描述
bool hash_equals ( string $known_string , string $user_string )
使用相同的时间比较两个字符串,不管它们是否相等。
这个功能应该用来缓解定时攻击;;例如,在测试crypt()密码哈希值时。
参数
known_string
已知长度的字符串进行比较
user_string
用户提供的字符串
返回值
两个字符串相等时返回TRUE
,否则返回FALSE
。
错误/异常
当提供的参数不是字符串时,发出E_WARNING
消息。
例子
示例#1 hash_equals()示例
<?php
$expected = crypt('12345', '$2a$07$usesomesillystringforsalt$');
$correct = crypt('12345', '$2a$07$usesomesillystringforsalt$');
$incorrect = crypt('apple', '$2a$07$usesomesillystringforsalt$');
var_dump(hash_equals($expected, $correct));
var_dump(hash_equals($expected, $incorrect));
?>
上面的例子将输出:
bool(true)
bool(false)
笔记
注意:
两个参数的长度必须相同才能成功比较。当提供不同长度的参数时,立即返回
FALSE
,并且在定时攻击的情况下已知字符串的长度可能被泄漏。
注意:
提供用户提供的字符串作为第二个参数非常重要,而不是第一个参数。
← hash_copy
hash_file →
本文档系腾讯云开发者社区成员共同维护,如有问题请联系 cloudcommunity@tencent.com