php rsa加密解密
封面图
•
2025-10-08
•
PHP
143
0
0
0
在 PHP 中使用 RSA 加密和解密,通常涉及到使用 OpenSSL 扩展。RSA 是一种非对称加密算法,使用公钥加密数据,私钥解密数据。 以下是一个完整的 PHP 示例,展示如何使用 RSA 进行加密和解密: --- ## 🔐 1. 生成 RSA 密钥对(公钥 & 私钥) 你可以使用 OpenSSL 命令行工具生成 RSA 密钥对: ```bash # 生成私钥 (private_key.pem) openssl genrsa -out private_key.pem 2048 # 从私钥中提取公钥 (public_key.pem) openssl rsa -in private_key.pem -pubout -out public_key.pem ``` --- ## 🔐 2. PHP 中使用 RSA 加密与解密 ### ✅ 加密(使用公钥) ```php <?php // 读取公钥 $publicKey = openssl_pkey_get_public(file_get_contents('public_key.pem')); // 要加密的数据 $data = "Hello, this is a secret message."; // 使用公钥加密 openssl_public_encrypt($data, $encrypted, $publicKey); // 将加密后的数据转换为 base64 编码(便于传输) $encryptedData = base64_encode($encrypted); echo "Encrypted: " . $encryptedData . "\n"; ``` --- ### ✅ 解密(使用私钥) ```php <?php // 读取私钥 $privateKey = openssl_pkey_get_private(file_get_contents('private_key.pem')); // 获取加密后的数据(假设是从其他地方获取的) $encryptedData = "..." ; // 替换为实际的加密字符串 // 将 base64 数据解码 $encrypted = base64_decode($encryptedData); // 使用私钥解密 openssl_private_decrypt($encrypted, $decrypted, $privateKey); echo "Decrypted: " . $decrypted . "\n"; ``` --- ## ⚠️ 注意事项 - **密钥路径**:确保 `public_key.pem` 和 `private_key.pem` 文件路径正确。 - **加密长度限制**:RSA 加密的数据长度不能超过密钥长度减去填充长度(如 PKCS1 v1.5)。通常建议加密小数据(如密码、会话令牌)。 - **安全性**:不要将私钥暴露在公共环境中。 - **PHP 版本兼容性**:确保你的 PHP 环境支持 `openssl` 扩展。 --- ## 🧠 补充说明:OpenSSL 函数详解 | 函数 | 说明 | |------|------| | `openssl_pkey_get_public()` | 从文件或字符串中加载公钥 | | `openssl_pkey_get_private()` | 从文件或字符串中加载私钥 | | `openssl_public_encrypt()` | 使用公钥加密数据 | | `openssl_private_decrypt()` | 使用私钥解密数据 | --- 如果你需要更高级的功能(如签名、验证),也可以使用 `openssl_sign()` 和 `openssl_verify()`。 --- 是否需要我提供一个完整的 RSA 加密/解密类?或者你有特定的使用场景(如 Web API、用户登录等)?我可以进一步优化代码。
上一篇:
如何在shell脚本中接受来自用户的一行输入?
下一篇:
php sprintf用法
标题录入,一次不能超过6条
返回顶部
留言
留言
评论