PHP Conference Japan 2024

md5

(PHP 4, PHP 5, PHP 7, PHP 8)

md5计算字符串的 md5 散列值

警告

不建议使用此函数来保护密码,因为此哈希算法的速度很快。有关详细信息和最佳实践,请参阅密码哈希常见问题解答

描述

md5(字符串 $string, 布尔值 $binary = false): 字符串

使用» RSA 数据安全公司 MD5 消息摘要算法计算string的 MD5 散列值,并返回该散列值。

参数

string

字符串。

binary

如果可选参数binary设置为true,则 MD5摘要将以原始二进制格式返回,长度为 16。

返回值

返回一个 32 个字符的十六进制数字作为散列值。

示例

示例 #1 一个 md5() 示例

<?php
$str
= 'apple';

if (
md5($str) === '1f3870be274f6c49b3e31a0c6728957f') {
echo
"你想吃青苹果还是红苹果?";
}
?>

参见

添加备注

用户贡献的备注 2 条备注

yiminrong at yahoo dot ca
3 年前
关于 Ray Paseur 的评论,字符串哈希为

0e462097431906509019562988736854
0e830400451993494058024219903391

获得与格式 /^0+e[0-9]+$/ 完全匹配的哈希值的概率并不高,但也并非可以忽略不计。

应该为所有哈希函数添加一个一般性警告,始终使用三个等号 === 进行比较。

实际上,警告应该在比较字符串值时出现在运算符部分!有很多关于字符串比较的警告,但没有关于格式 /^0+e[0-9]+$/ 的具体警告。
Ray.Paseur sometimes uses Gmail
6 年前
md5('240610708') == md5('QNKCDZO')

此比较结果为真,因为这两个 md5() 哈希都以 '0e' 开头,因此 PHP 类型转换将这些字符串理解为科学计数法。根据定义,零的任何次幂都为零。
To Top