当前位置:首页 > PHP

php rsa 实现

2026-02-27 15:14:17PHP

RSA 加密原理

RSA 是一种非对称加密算法,基于大整数分解的数学难题。公钥用于加密,私钥用于解密。密钥生成过程涉及选择两个大素数、计算模数和欧拉函数,最终确定公钥指数和私钥指数。

生成 RSA 密钥对

使用 OpenSSL 扩展生成密钥对:

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

加密数据

使用公钥加密字符串:

$data = "敏感信息";
openssl_public_encrypt($data, $encrypted, $publicKey);
$encryptedBase64 = base64_encode($encrypted); // 便于传输

解密数据

使用私钥解密数据:

openssl_private_decrypt(
    base64_decode($encryptedBase64),
    $decrypted,
    $privateKey
);
echo $decrypted; // 输出原始数据

签名与验证

生成数字签名:

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

验证签名有效性:

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

密钥存储建议

  • 私钥应保存在安全位置,如加密的服务器存储
  • 公钥可分发到客户端或公开
  • 考虑使用文件或数据库存储密钥,并设置适当权限

性能注意事项

  • RSA 加密较慢,适合加密少量数据(如对称密钥)
  • 大数据加密建议结合 AES 等对称算法
  • 密钥长度影响安全性,2048 位是当前推荐的最小长度

以上实现使用 PHP 内置的 OpenSSL 函数,确保服务器已安装该扩展。实际应用中应增加错误处理和日志记录机制。

php rsa 实现

标签: phprsa
分享给朋友:

相关文章

php实现验证码

php实现验证码

PHP实现验证码的方法 使用GD库生成验证码 GD库是PHP中处理图像的扩展,可用于生成验证码图片。 <?php session_start(); $width = 120; $height…

php 实现登录

php 实现登录

PHP 登录功能实现 使用 PHP 实现登录功能通常需要结合数据库验证和会话管理。以下是一个基本的登录实现流程: 数据库准备 创建用户表存储用户名和密码(建议使用哈希加密): CREATE TAB…

php 实现购物车

php 实现购物车

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

php实现文件的下载

php实现文件的下载

PHP 实现文件下载的方法 在 PHP 中实现文件下载功能通常需要设置正确的 HTTP 头信息,并输出文件内容。以下是几种常见的实现方式: 使用 header() 函数强制下载 通过设置 Cont…

php实现聊天

php实现聊天

实现 PHP 聊天功能的方法 使用 WebSocket 和 PHP 实现实时聊天 WebSocket 是一种全双工通信协议,适合实现实时聊天功能。PHP 可以通过 Ratchet 库实现 WebSo…

php实现上传图片

php实现上传图片

上传图片的基本流程 PHP 实现图片上传功能需要处理文件接收、验证、保存等步骤。以下是具体实现方法。 创建 HTML 表单 在 HTML 中创建一个表单,设置 enctype="multipart…