豌豆Ai站群搜索引擎系统 V.25.10.25 网址:www.wd.chat

🗣 Wd提问: RSA加密PHP源码

🤖 Ai回答:
以下是使用 PHP 实现 RSA 加密的完整示例代码,包括生成密钥对、加密和解密功能。该示例使用 PHP 的 `openssl` 扩展。

✅ 要求:
PHP 环境(支持 `openssl` 扩展)
`openssl` 扩展已启用(通常默认启用)

🔐 1、生成 RSA 密钥对(公钥和私钥)

php
<?php

// 生成 RSA 密钥对
$privateKey = openssl_pkey_new([
private_key_type = OPENSSL_KEYTYPE_RSA,
rsa_bits = 2048, // 密钥长度
]);

// 提取私钥
openssl_pkey_export($privateKey, $privateKeyPem);

// 提取公钥
$publicKey = openssl_pkey_get_details($privateKey);
$publicKeyPem = $publicKey[key];

// 保存到文件(可选)
file_put_contents(private_key.pem, $privateKeyPem);
file_put_contents(public_key.pem, $publicKeyPem);

echo 私钥已保存为 private_key.pem\n;
echo 公钥已保存为 public_key.pem\n;
?

🔐 2、使用公钥加密数据

php
<?php
// 加载公钥
$publicKey = openssl_pkey_get_public(file_get_contents(public_key.pem));

// 要加密的数据
$data = Hello, RSA Encryption!;

// 加密
$encrypted = '';
if (openssl_public_encrypt($data, $encrypted, $publicKey, OPENSSL_PKCS1_OAEP_PADDING)) {
// 使用 base64 编码输出(便于传输)
$encryptedData = base64_encode($encrypted);
echo 加密结果: 、$encryptedData 、\n;
} else {
echo 加密失败: 、openssl_error_string() 、\n;
}

// 释放资源
openssl_free_key($publicKey);
?

🔐 3、使用私钥解密数据

php
<?php
// 加载私钥
$privateKey = openssl_pkey_get_private(file_get_contents(private_key.pem));

// 假设这是从加密中得到的密文(base64 编码)
$encryptedData = 你的base64加密字符串;
$encrypted = base64_decode($encryptedData);

// 解密
$decrypted = '';
if (openssl_private_decrypt($encrypted, $decrypted, $privateKey, OPENSSL_PKCS1_OAEP_PADDING)) {
echo 解密结果: 、$decrypted 、\n;
} else {
echo 解密失败: 、openssl_error_string() 、\n;
}

// 释放资源
openssl_free_key($privateKey);
?

📌 注意事项:

1、密钥长度:建议使用 `2048` 或更高位数,`1024` 已不安全。
2、填充方式:
`OPENSSL_PKCS1_OAEP_PADDING`:推荐,更安全。
`OPENSSL_PKCS1_PADDING`:旧方式,安全性较低。
3、数据大小限制:
RSA 加密的数据长度受限于密钥长度。
例如:2048 位 RSA 最多加密约 245 字节数据。
超过长度需使用 混合加密(如 AES + RSA)。
4、文件权限:确保 `private_key.pem` 文件权限安全,避免泄露。

✅ 安全建议(生产环境)

不要将私钥暴露在代码中,应保存在安全位置。
使用 HTTPS 传输密钥或加密数据。
对于大文件加密,建议使用 AES 对称加密,然后用 RSA 加密 AES 密钥。

🔄 混合加密示例(推荐)

php
<?php
// 生成 AES 密钥
$aesKey = openssl_random_pseudo_bytes(32); // 256 位 AES 密钥

// 使用 RSA 加密 AES 密钥
$publicKey = openssl_pkey_get_public(file_get_contents(public_key.pem));
$encryptedAesKey = '';
openssl_public_encrypt($aesKey, $encryptedAesKey, $publicKey, OPENSSL_PKCS1_OAEP_PADDING);

// 使用 AES 加密数据
$data = This is sensitive data.;
$iv = openssl_random_pseudo_bytes(16); // 初始化向量
$encryptedData = openssl_encrypt($data, 'AES-256-CBC', $aesKey, OPENSSL_RAW_DATA, $iv);

// 返回加密结果(包含 IV 和加密数据)
$finalResult = base64_encode($iv 、$encryptedData);
$encryptedAesKey = base64_encode($encryptedAesKey);

echo 加密数据: 、$finalResult 、\n;
echo 加密的 AES 密钥: 、$encryptedAesKey 、\n;
?

🔐 总结

| 功能 | 方法 |

| 生成密钥对 | `openssl_pkey_new()` |
| 保存私钥 | `openssl_pkey_export()` |
| 保存公钥 | `openssl_pkey_get_details()` |
| 公钥加密 | `openssl_public_encrypt()` |
| 私钥解密 | `openssl_private_decrypt()` |

如需进一步支持 PKCS8 格式、PEM 密码保护 或 跨语言兼容(如 Java/Python),可继续扩展。需要我提供这些高级功能的代码吗?

Ai作答

📣 商家广告


店名

广东过滤器

算命

广告招商

算命


0

IP地址: 159.23.147.158

搜索次数: 0

提问时间: 2025-11-10 16:02:02

🛒 域名购买
hv.gs
kb.gs
41.gs
z-j.net
koupin.com.cn
827.net.cn
5.he.cn
wangsou.com.cn
nefronet.com
25.gold

❓️ 热门提问
VPS云主机购买指南
香港vps哪家便宜
wins服务器是什么
服务器并发
墨西哥目的港
可靠云服务器
虚拟主机学生
二级等保机房
linux服务器香港
网站空间和虚拟主机
豌豆Ai站群搜索引擎系统

🌐 域名评估
prhh.cn
t.sc.cn
deepseek.black
oo.xj.cn
96au.com
ev.he.cn
vahf.cn
deepseek.uno
uhmm.cn
z.hn.cn

⛏ 最新挖掘
凯里酸汤鱼
贵阳烤脑花
都匀毛尖茶
花溪牛肉粉
贵阳烤生蚝
贵阳烤豆腐
贵阳纸包鱼
贵阳特色菜

🖌 热门作画

🤝 关于我们:
豌豆Ai 域名 建站 站群 留痕 推广 评估 源码
开发Ai 工具 日记 价格 加盟 广告 流量 留言 联系

🗨 加入群聊
群

🔗 友情链接
搜尋引擎大全  北京网络seo  ai提问

🧰 站长工具
Ai工具  whois查询  搜索

📢 温馨提示:本站所有问答由Ai自动创作,内容仅供参考,若有误差请用“联系”里面信息通知我们人工修改或删除。

👉 技术支持:本站由豌豆Ai提供技术支持,使用的最新版:《豌豆Ai站群搜索引擎系统 V.25.10.25》搭建本站。

上一篇 84810 84811 84812 下一篇