当前位置:首页 > 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);

验证签名有效性:

php rsa 实现

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

密钥存储建议

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

性能注意事项

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

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

标签: phprsa
分享给朋友:

相关文章

php实现websocket

php实现websocket

PHP 实现 WebSocket WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议。PHP 可以通过多种方式实现 WebSocket 功能,以下是几种常见的方法: 使用 Ratc…

php 购物车实现

php 购物车实现

数据库设计 购物车功能通常需要设计数据库表存储商品和用户信息。常见的表包括products(商品表)、users(用户表)和cart(购物车表)。cart表通常包含字段:id(主键)、user_id(…

php怎么实现登录功能

php怎么实现登录功能

数据库准备 创建用户表存储登录信息,通常包括用户名、密码(需加密)等字段。示例SQL: CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY…

php 实现单链表

php 实现单链表

单链表的基本概念 单链表是一种线性数据结构,由节点组成,每个节点包含数据域和指向下一个节点的指针域。链表的头节点是访问整个链表的入口。 单链表的节点类实现 在PHP中,可以通过类来定义链表节…

php 实现队列

php 实现队列

PHP 实现队列的方法 PHP 可以通过多种方式实现队列功能,以下是几种常见的实现方法: 使用数组实现队列 PHP 数组可以通过 array_push 和 array_shift 函数模拟队列的先进…

php实现的进度条

php实现的进度条

PHP 实现的进度条方法 在 PHP 中实现进度条通常可以通过命令行脚本(CLI)或 Web 页面两种方式完成。以下是几种常见的实现方法: 命令行进度条 使用 PHP CLI 实现进度条,可以通过不…