当前位置:首页 > PHP

php实现rsa

2026-02-14 20:08:25PHP

php实现rsa

php实现rsa

PHP 实现 RSA 加密解密

PHP 提供了内置的 OpenSSL 扩展来实现 RSA 加密和解密功能。以下是完整的实现方法:

生成 RSA 密钥对

$config = array(
    "digest_alg" => "sha512",
    "private_key_bits" => 4096,
    "private_key_type" => OPENSSL_KEYTYPE_RSA,
);

// 生成密钥对
$res = openssl_pkey_new($config);

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

// 提取公钥
$publicKey = openssl_pkey_get_details($res);
$publicKey = $publicKey["key"];

// 保存密钥到文件(可选)
file_put_contents('private.key', $privateKey);
file_put_contents('public.key', $publicKey);

使用公钥加密数据

$data = "敏感数据需要加密";
openssl_public_encrypt($data, $encrypted, $publicKey);

// 加密后的数据是二进制,可以base64编码便于传输
$encrypted = base64_encode($encrypted);

使用私钥解密数据

// 先解码base64
$encrypted = base64_decode($encrypted);

openssl_private_decrypt($encrypted, $decrypted, $privateKey);

echo $decrypted; // 输出: 敏感数据需要加密

使用私钥签名数据

$data = "需要签名的数据";
openssl_sign($data, $signature, $privateKey, OPENSSL_ALGO_SHA256);

// 签名也是二进制,可以base64编码
$signature = base64_encode($signature);

使用公钥验证签名

$data = "需要签名的数据";
$signature = base64_decode($signature);

$valid = openssl_verify($data, $signature, $publicKey, OPENSSL_ALGO_SHA256);

if ($valid === 1) {
    echo "签名验证成功";
} else {
    echo "签名验证失败";
}

注意事项

  • RSA 加密有长度限制,通常只能加密比密钥长度小的数据(例如4096位密钥最多加密446字节)
  • 对于大数据加密,应该使用对称加密(如AES)加密数据,再用RSA加密对称密钥
  • 密钥长度建议至少2048位,高安全性场景使用4096位
  • 私钥必须严格保密,公钥可以自由分发
  • 生产环境应该使用专业的密钥管理方案

性能优化建议

  • 对于频繁的加密操作,可以缓存密钥而不是每次从文件读取
  • 考虑使用更高效的签名算法如OPENSSL_ALGO_SHA256替代OPENSSL_ALGO_SHA512
  • 大量数据加密时,采用混合加密方案(RSA+AES)性能更好

标签: phprsa
分享给朋友:

相关文章

git php实现

git php实现

Git 与 PHP 的集成实现 使用 PHP 执行 Git 命令 通过 PHP 的 exec()、shell_exec() 或 passthru() 函数可以直接调用 Git 命令,适用于服务器端操作…

php实现websocket

php实现websocket

PHP 实现 WebSocket WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议。PHP 可以通过多种方式实现 WebSocket 功能,以下是几种常见的方法: 使用 Ratc…

php实现表单

php实现表单

PHP 表单基础实现 创建一个简单的 PHP 表单需要 HTML 表单结构和 PHP 处理脚本。以下是一个完整的示例: HTML 表单部分 (form.html) <form action=…

php 实现接口

php 实现接口

PHP 实现接口的方法 在 PHP 中,接口(Interface)用于定义一组方法的规范,而不包含具体的实现。类可以实现(implement)接口,并必须实现接口中定义的所有方法。 定义接口 接口通…

php 实现验证码

php 实现验证码

使用 PHP 生成验证码 验证码(CAPTCHA)用于防止自动化脚本提交表单,以下是几种常见的 PHP 实现方法。 使用 GD 库生成图片验证码 GD 库是 PHP 的图像处理扩展,可用于生成验证码…

php怎么实现登录功能

php怎么实现登录功能

数据库准备 创建用户表存储登录信息,通常包括用户名、密码(需加密)等字段。示例SQL: CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY…