本文目录导读:

我来帮你了解 PHP 中的摘要功能。
PHP 摘要的主要类型
MD5 摘要(不推荐用于安全用途)
$text = "Hello World"; $hash = md5($text); echo $hash; // b10a8db164e0754105b7a99be72e3fe5
SHA1 摘要(不推荐用于安全用途)
$text = "Hello World"; $hash = sha1($text); echo $hash; // 0a4d55a8d778e5022fab701977c5d840bbc486d0
SHA-256/SHA-512(推荐)
$text = "Hello World";
$hash256 = hash('sha256', $text);
$hash512 = hash('sha512', $text);
echo $hash256;
echo $hash512;
bcrypt 密码哈希(最推荐用于密码)
$password = "user123";
// 创建哈希
$hash = password_hash($password, PASSWORD_BCRYPT);
echo $hash; // $2y$10$...
// 验证密码
if (password_verify($password, $hash)) {
echo "密码正确";
}
Argon2(PHP 7.2+,现代推荐)
$password = "user123"; // 创建哈希 $hash = password_hash($password, PASSWORD_ARGON2I); // 或 $hash = password_hash($password, PASSWORD_ARGON2ID); echo $hash;
实用示例
// 计算文件 MD5
$file_hash = md5_file("document.pdf");
// 计算文件 SHA256
$file_hash = hash_file('sha256', "document.pdf");
HMAC(带密钥的哈希)
$data = "重要信息";
$key = "secret_key";
$hmac = hash_hmac('sha256', $data, $key);
echo $hmac;
完整例子:密码安全存储
class UserAuth {
public static function hashPassword($password) {
// 使用 bcrypt 并自定义成本
$options = [
'cost' => 12, // 越高越安全,但速度越慢
];
return password_hash($password, PASSWORD_BCRYPT, $options);
}
public static function verifyPassword($password, $hash) {
return password_verify($password, $hash);
}
}
// 使用
$hash = UserAuth::hashPassword("user123");
echo "哈希值: " . $hash;
if (UserAuth::verifyPassword("user123", $hash)) {
echo "验证成功";
}
安全建议
| 用途 | 推荐算法 | 说明 |
|---|---|---|
| 密码存储 | Argon2 或 bcrypt |
自动加盐,可调成本 |
| 数据完整性 | SHA-256 或 SHA-3 |
无密钥校验 |
| API 签名 | HMAC-SHA256 |
带密钥验证 |
| 文件校验 | SHA-256 |
防篡改 |
不推荐的做法
// ❌ 不要这样 $hash = md5($password); // 彩虹表攻击 $hash = sha1($password); // 不够安全 $hash = md5($password . "salt"); // 自定义加盐不安全 // ✅ 应该这样 $hash = password_hash($password, PASSWORD_ARGON2ID);
代码检测
// 检查支持的哈希算法 print_r(hash_algos()); // 检查密码哈希信息 $info = password_get_info($hash); print_r($info);
有什么具体的摘要需求吗?我可以提供更针对性的代码示例。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播