关于 Ray Paseur 的评论,字符串哈希为
0e462097431906509019562988736854
0e830400451993494058024219903391
获得与格式 /^0+e[0-9]+$/ 完全匹配的哈希值的概率并不高,但也并非可以忽略不计。
应该为所有哈希函数添加一个一般性警告,始终使用三个等号 === 进行比较。
实际上,警告应该在比较字符串值时出现在运算符部分!有很多关于字符串比较的警告,但没有关于格式 /^0+e[0-9]+$/ 的具体警告。
(PHP 4, PHP 5, PHP 7, PHP 8)
md5 — 计算字符串的 md5 散列值
不建议使用此函数来保护密码,因为此哈希算法的速度很快。有关详细信息和最佳实践,请参阅密码哈希常见问题解答。
返回一个 32 个字符的十六进制数字作为散列值。
示例 #1 一个 md5() 示例
<?php
$str = 'apple';
if (md5($str) === '1f3870be274f6c49b3e31a0c6728957f') {
echo "你想吃青苹果还是红苹果?";
}
?>
关于 Ray Paseur 的评论,字符串哈希为
0e462097431906509019562988736854
0e830400451993494058024219903391
获得与格式 /^0+e[0-9]+$/ 完全匹配的哈希值的概率并不高,但也并非可以忽略不计。
应该为所有哈希函数添加一个一般性警告,始终使用三个等号 === 进行比较。
实际上,警告应该在比较字符串值时出现在运算符部分!有很多关于字符串比较的警告,但没有关于格式 /^0+e[0-9]+$/ 的具体警告。
md5('240610708') == md5('QNKCDZO')
此比较结果为真,因为这两个 md5() 哈希都以 '0e' 开头,因此 PHP 类型转换将这些字符串理解为科学计数法。根据定义,零的任何次幂都为零。