函數(shù)名:hash_equals()
適用版本:PHP 5 >= 5.6.0, PHP 7
函數(shù)描述:hash_equals() 函數(shù)用于比較兩個字符串是否相等,但不會受到時序攻擊的影響。它在比較過程中會對字符串進(jìn)行常量時間的比較,以防止計時攻擊。
用法: hash_equals(string $known_string, string $user_string): bool
參數(shù):
- $known_string:已知的字符串,通常是正確的值。
- $user_string:用戶提供的字符串,需要進(jìn)行比較的值。
返回值: 如果兩個字符串相等,則返回 true,否則返回 false。
示例:
<?php
$known_string = "password123";
$user_string = $_POST['password'];
if (hash_equals($known_string, $user_string)) {
echo "密碼正確!";
} else {
echo "密碼錯誤!";
}
?>
在上面的示例中,我們通過 hash_equals() 函數(shù)比較用戶提供的密碼與已知密碼來進(jìn)行密碼驗證。無論用戶提供的密碼是否正確,函數(shù)都會以常量時間進(jìn)行比較,以避免時序攻擊。如果兩個字符串相等,則輸出 "密碼正確!",否則輸出 "密碼錯誤!"。