当前位置:首页 > PHP

php实现rsa

2026-01-29 22:16:03PHP

PHP 实现 RSA 加密解密

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

php实现rsa

生成 RSA 密钥对

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

php实现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";

验证签名:

$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实现分页的基本方法 使用LIMIT和OFFSET进行数据库查询分页。通过计算当前页码和每页显示数量,动态生成SQL语句。 $page = isset($_GET['page']) ? (int…

php实现搜索功能

php实现搜索功能

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

php 实现自动收货

php 实现自动收货

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

git php实现

git php实现

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

php实现栈

php实现栈

栈的基本概念 栈(Stack)是一种遵循后进先出(LIFO)原则的数据结构。核心操作包括: push:元素入栈。 pop:元素出栈(返回并移除栈顶元素)。 peek:查看栈顶元素…

php 路由实现

php 路由实现

PHP 路由实现方法 在 PHP 中实现路由功能有多种方式,以下是几种常见的实现方法: 使用原生 PHP 实现 通过解析 URL 并匹配对应的控制器和动作: $request = $_SERV…