php 实现md5
使用 PHP 内置函数实现 MD5
PHP 提供了内置函数 md5() 用于计算字符串的 MD5 哈希值。该函数接受一个字符串参数,并返回一个 32 字符的十六进制数。
$string = "Hello World";
$hash = md5($string);
echo $hash; // 输出: b10a8db164e0754105b7a99be72e3fe5
计算文件的 MD5 哈希
md5_file() 函数可以计算文件的 MD5 哈希值。只需传入文件路径即可。
$file = "example.txt";
$fileHash = md5_file($file);
echo $fileHash;
使用哈希上下文进行流式处理
对于大文件或流数据,可以使用哈希上下文逐步计算 MD5。
$ctx = hash_init('md5');
hash_update($ctx, 'Hello ');
hash_update($ctx, 'World');
$hash = hash_final($ctx);
echo $hash; // 输出: b10a8db164e0754105b7a99be72e3fe5
安全注意事项
MD5 算法已被证明存在碰撞漏洞,不应用于密码存储等安全场景。建议使用更安全的算法如 SHA-256 或 bcrypt。
// 更安全的替代方案
$password = "mypassword";
$hashedPassword = password_hash($password, PASSWORD_BCRYPT);
获取原始二进制输出
默认情况下 md5() 返回十六进制字符串。如需原始二进制输出,可设置第二个参数为 true。
$binaryHash = md5($string, true);
比较哈希值
比较哈希值时,建议使用恒定时间比较函数防止时序攻击。
if (hash_equals($knownHash, $userHash)) {
// 哈希匹配
}





