当前位置:首页 > 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 表单和服务器端脚本。以下是详细步骤: 创建 HTML 表单 使用 enctype="multipart/form-data"…

php实现文件下载

php实现文件下载

PHP实现文件下载的方法 通过PHP实现文件下载功能,可以采用多种方式,以下是几种常见的实现方法: 使用header()函数强制下载 设置HTTP头信息,强制浏览器下载文件而非直接打开:…

php实现搜索功能

php实现搜索功能

实现基本的搜索功能 在PHP中实现搜索功能通常涉及数据库查询。以下是一个简单的实现方式,假设使用MySQL数据库: <?php // 连接数据库 $conn = new mysqli('loc…

php实现递归

php实现递归

递归的基本概念 递归是一种函数调用自身的技术,适用于解决可以分解为相同子问题的问题。在PHP中,递归需要明确的终止条件(基线条件),否则会导致无限循环。 递归实现阶乘 阶乘是经典的递归案例,n!…

php 实现自动收货

php 实现自动收货

PHP 实现自动收货功能 自动收货功能通常用于电商系统,在订单超过一定时间未手动确认收货时自动完成订单。以下是实现方法: 数据库设计 需要订单表包含以下关键字段: CREATE TABLE o…

git php实现

git php实现

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