当前位置:首页 > PHP

php rsa 实现

2026-01-16 10:55:12PHP

PHP RSA 加密与解密实现

生成密钥对

使用 openssl_pkey_new 生成 RSA 密钥对,并通过 openssl_pkey_export 导出私钥。公钥可从密钥对中提取。

$config = [
    "digest_alg" => "sha512",
    "private_key_bits" => 2048,
    "private_key_type" => OPENSSL_KEYTYPE_RSA,
];

$keyPair = openssl_pkey_new($config);
openssl_pkey_export($keyPair, $privateKey);
$publicKey = openssl_pkey_get_details($keyPair)["key"];

加密数据

使用公钥加密数据,openssl_public_encrypt 函数将明文加密为二进制密文,通常需要 Base64 编码以便传输。

php rsa 实现

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

解密数据

使用私钥解密数据,先对 Base64 密文解码,再通过 openssl_private_decrypt 还原明文。

$encryptedData = base64_decode($encryptedBase64);
openssl_private_decrypt($encryptedData, $decrypted, $privateKey);
echo $decrypted; // 输出: Sensitive data

签名与验证

用私钥生成签名,公钥验证签名完整性。

php rsa 实现

openssl_sign($plaintext, $signature, $privateKey, OPENSSL_ALGO_SHA256);
$isValid = openssl_verify($plaintext, $signature, $publicKey, OPENSSL_ALGO_SHA256);
echo $isValid === 1 ? "Valid" : "Invalid";

密钥存储

生成的密钥可保存为文件:

file_put_contents('private.pem', $privateKey);
file_put_contents('public.pem', $publicKey);

加载现有密钥:

$privateKey = openssl_pkey_get_private(file_get_contents('private.pem'));
$publicKey = openssl_pkey_get_public(file_get_contents('public.pem'));

注意事项

  • 密钥长度建议至少 2048 位以保证安全。
  • 加密数据长度受密钥长度限制,长数据需分段处理或使用混合加密(如 AES+RSA)。
  • 敏感操作需处理 openssl_error_string() 返回的错误信息。
  • 生产环境建议使用专业库如 phpseclib 进行更复杂的操作。

标签: phprsa
分享给朋友:

相关文章

php实现分页

php实现分页

PHP实现分页的基本方法 使用原生PHP实现分页功能需要结合数据库查询和HTML展示。以下是核心实现步骤: 数据库查询与分页逻辑 // 连接数据库 $conn = new mysqli('loca…

php实现图片上传

php实现图片上传

实现图片上传的基本步骤 创建HTML表单用于文件上传,表单需设置enctype="multipart/form-data"属性,确保文件数据正确传输。 <form action="upload…

php记住密码怎么实现

php记住密码怎么实现

使用Cookie实现记住密码功能 在PHP中,可以通过设置Cookie来记住用户的登录状态。以下是一个简单的实现方式: // 用户登录验证成功后 if ($login_success) {…

php实现队列

php实现队列

PHP实现队列的方法 队列是一种先进先出(FIFO)的数据结构,PHP可以通过多种方式实现队列功能。 使用数组模拟队列 PHP数组可以模拟队列的基本操作,通过array_push和array_shi…

php 实现购物车

php 实现购物车

PHP 实现购物车功能 购物车功能是电子商务网站的核心部分,可以通过 PHP 和 Session 或数据库来实现。以下是两种常见的实现方式: 使用 Session 存储购物车数据 Session 是…

基于php的设计与实现

基于php的设计与实现

PHP 设计与实现的关键要素 环境搭建与框架选择 PHP开发需配置服务器环境(如Apache/Nginx)、PHP版本(建议7.4+)及数据库(MySQL/MariaDB)。主流框架包括Laravel…