rsa php实现
RSA 算法简介
RSA 是一种非对称加密算法,广泛应用于数据加密和数字签名。它基于大数分解的数学难题,使用公钥加密、私钥解密。
PHP 实现 RSA 加密解密
PHP 内置了 OpenSSL 扩展,可以方便地实现 RSA 加密解密操作。
生成密钥对
使用 OpenSSL 生成 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"];
加密数据
使用公钥加密数据:
$data = "敏感数据需要加密";
openssl_public_encrypt($data, $encrypted, $publicKey);
$encrypted = base64_encode($encrypted); // 便于传输
解密数据
使用私钥解密数据:

$encrypted = base64_decode($encrypted);
openssl_private_decrypt($encrypted, $decrypted, $privateKey);
echo $decrypted;
RSA 签名验证
RSA 也可用于数字签名,验证数据完整性。
生成签名
openssl_sign($data, $signature, $privateKey, OPENSSL_ALGO_SHA256);
$signature = base64_encode($signature);
验证签名
$signature = base64_decode($signature);
$valid = openssl_verify($data, $signature, $publicKey, OPENSSL_ALGO_SHA256);
echo $valid === 1 ? "签名有效" : "签名无效";
注意事项
- 密钥长度建议至少 2048 位,高安全场景使用 4096 位
- 妥善保管私钥,切勿泄露
- 加密数据长度受密钥长度限制,长数据需分段处理
- 生产环境应考虑使用专业的密钥管理系统
性能优化建议
对于大量数据加密,建议:
- 使用 RSA 加密对称密钥(如 AES 密钥)
- 用对称加密算法加密实际数据
- 这种混合加密方式兼顾安全性和性能






