PHP加密解密方法与实战应用
时间:2026-01-22 12:24:46 234浏览 收藏
大家好,今天本人给大家带来文章《PHP加密解密实现方法及应用详解》,文中内容主要涉及到,如果你对文章方面的知识点感兴趣,那就请各位朋友继续看下去吧~希望能真正帮到你们,谢谢!
哈希加密用于密码存储,推荐使用password_hash()和password_verify();2. 对称加密使用openssl_encrypt/decrypt实现高效加解密;3. 非对称加密通过公私钥保障传输安全,适用于安全通信。

在PHP开发中,数据加密与解密是保障信息安全的重要手段。根据使用场景不同,主要分为哈希加密、对称加密和非对称加密三种方式。每种方式适用于不同的安全需求,下面分别介绍其实现方法和实际应用。
哈希加密:用于不可逆的数据摘要
哈希加密是一种单向加密方式,常用于密码存储。一旦数据被哈希处理,就无法还原原始内容,适合保护敏感信息如用户密码。
常用函数:
- password_hash():推荐用于密码哈希,自动加盐并支持可升级算法(如bcrypt)。
- password_verify():验证用户输入的密码是否与哈希值匹配。
- hash() 或 md5()/sha1():不推荐用于密码,仅用于校验或一致性检查。
示例代码:
$password = "user123";
$hashed = password_hash($password, PASSWORD_DEFAULT);
if (password_verify("user123", $hashed)) {
echo "密码正确";
}
对称加密:加密解密使用同一密钥
对称加密速度快,适合大量数据加密,如配置文件、会话数据等。但密钥管理需谨慎,必须保证密钥不泄露。
常用函数:
- openssl_encrypt() 和 openssl_decrypt():基于OpenSSL扩展,支持AES等强加密算法。
示例代码:
$data = "要加密的内容"; $key = "your-secret-key-16-byte"; // 注意长度 $iv = openssl_random_pseudo_bytes(16); // 初始化向量 $encrypted = openssl_encrypt($data, 'AES-128-CBC', $key, 0, $iv); $decrypted = openssl_decrypt($encrypted, 'AES-128-CBC', $key, 0, $iv); echo $decrypted; // 输出原文
注意:IV(初始化向量)应每次随机生成,并与密文一起存储以便解密。
非对称加密:公钥加密,私钥解密
非对称加密使用一对密钥(公钥和私钥),公钥可公开,私钥保密。适合安全通信、数字签名等场景。
典型应用: 用户用服务器公钥加密数据,服务器用自己的私钥解密,确保传输安全。
实现步骤:
- 生成密钥对:openssl_pkey_new()
- 导出公钥/私钥:openssl_pkey_get_details()
- 加密:openssl_public_encrypt()
- 解密:openssl_private_decrypt()
示例代码:
// 生成密钥对
$config = [
"digest_alg" => "sha256",
"private_key_bits" => 2048,
"private_key_type" => OPENSSL_KEYTYPE_RSA,
];
$res = openssl_pkey_new($config);
openssl_pkey_export($res, $privateKey);
$publicKey = openssl_pkey_get_details($res)['key'];
// 加密
$data = "机密信息";
openssl_public_encrypt($data, $encrypted, $publicKey);
$encryptedData = base64_encode($encrypted);
// 解密
$decoded = base64_decode($encryptedData);
openssl_private_decrypt($decoded, $decrypted, $privateKey);
echo $decrypted;
基本上就这些。哈希用于密码存储,对称加密适合高效加解密,非对称加密保障传输安全。选择合适的方式,结合密钥管理和安全实践,才能有效提升系统安全性。
本篇关于《PHP加密解密方法与实战应用》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于文章的相关知识,请关注golang学习网公众号!
-
501 收藏
-
501 收藏
-
501 收藏
-
501 收藏
-
501 收藏
-
410 收藏
-
314 收藏
-
487 收藏
-
311 收藏
-
448 收藏
-
444 收藏
-
237 收藏
-
465 收藏
-
186 收藏
-
453 收藏
-
346 收藏
-
486 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 立即学习 543次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 立即学习 516次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 立即学习 500次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 立即学习 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 立即学习 485次学习