当前位置:首页 > PHP

php实现rsa

2026-01-29 22:16:03PHP

PHP 实现 RSA 加密解密

RSA 是一种非对称加密算法,广泛应用于数据加密和数字签名。PHP 提供了 OpenSSL 扩展来支持 RSA 加密解密操作。

生成 RSA 密钥对

使用 OpenSSL 函数生成 RSA 密钥对:

$config = array(
    "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"];

echo "Private Key:\n$privateKey\n";
echo "Public Key:\n$publicKey\n";

使用公钥加密数据

$data = "Sensitive data to encrypt";
openssl_public_encrypt($data, $encrypted, $publicKey);
$encryptedBase64 = base64_encode($encrypted);

echo "Encrypted Data (Base64):\n$encryptedBase64\n";

使用私钥解密数据

$encrypted = base64_decode($encryptedBase64);
openssl_private_decrypt($encrypted, $decrypted, $privateKey);

echo "Decrypted Data:\n$decrypted\n";

数字签名和验证

生成签名:

openssl_sign($data, $signature, $privateKey, OPENSSL_ALGO_SHA256);
$signatureBase64 = base64_encode($signature);

echo "Signature (Base64):\n$signatureBase64\n";

验证签名:

php实现rsa

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

echo $valid === 1 ? "Signature is valid" : "Signature is invalid";

注意事项

  • RSA 加密有长度限制,通常不能超过密钥长度减去填充长度(如 2048 位密钥最多加密 245 字节)
  • 对于大数据加密,建议使用 RSA 加密对称密钥,然后用对称密钥加密数据
  • 确保私钥安全存储,公钥可以公开分发
  • 考虑使用更现代的算法如 ECC 替代 RSA 在某些场景下

以上代码提供了 PHP 中实现 RSA 加密、解密、签名和验证的基本方法。实际应用中应根据具体需求调整密钥长度、填充方案等参数。

标签: phprsa
分享给朋友:

相关文章

php长连接实现

php长连接实现

PHP 长连接实现方法 长连接(Keep-Alive)允许客户端与服务器在一次TCP连接中发送和接收多个HTTP请求/响应,减少重复建立连接的开销。以下是PHP中实现长连接的几种方式: 配置HTTP…

php实现下载

php实现下载

PHP实现文件下载 使用PHP实现文件下载可以通过设置HTTP头部信息强制浏览器下载文件而非直接打开。以下是几种常见的方法: 方法一:直接输出文件内容 $file_path = 'path/to/…

php实现一个

php实现一个

PHP 实现一个简单的计算器 创建一个基本的计算器,支持加、减、乘、除运算。以下是一个完整的实现代码示例: <?php $result = ""; if ($_SERVER["REQUES…

php实现登陆

php实现登陆

PHP 实现登录功能 创建登录表单 在 HTML 文件中创建一个登录表单,包含用户名和密码输入框,表单的 action 属性指向处理登录的 PHP 文件。 <form action="logi…

php登陆功能实现

php登陆功能实现

实现PHP登录功能 数据库准备 创建一个用户表存储登录信息,基本字段包括用户名、密码(需加密)等: CREATE TABLE users ( id INT AUTO_INCREMENT PR…

php实现域名

php实现域名

PHP实现域名操作的方法 获取当前域名 使用$_SERVER['HTTP_HOST']可以获取当前访问的域名: $currentDomain = $_SERVER['HTTP_HOST']; ech…