当前位置:首页 > PHP

php实现rsa

2026-01-29 22:16:03PHP

PHP 实现 RSA 加密解密

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

生成 RSA 密钥对

使用 OpenSSL 函数生成 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";

验证签名:

php实现rsa

$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和MySQL实现基础的搜索功能需要结合表单提交与数据库查询。创建一个HTML表单用于接收用户输入的搜索关键词,通过PHP处理表单数据并查询数据库。 // 搜索表单 (HT…

php实现websocket

php实现websocket

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

php实现跳转

php实现跳转

PHP 实现页面跳转的方法 在 PHP 中实现页面跳转有多种方式,以下是常见的几种方法及其适用场景: 使用 header() 函数 通过 header() 函数发送 HTTP 头部信息实现跳转。注意…

php搜索功能实现的

php搜索功能实现的

PHP 搜索功能实现方法 数据库搜索实现 使用 SQL 的 LIKE 语句进行模糊匹配,适用于小型网站和简单搜索需求。 $searchTerm = $_GET['search']; $query =…

php实现一个

php实现一个

PHP 实现一个简单的计算器 创建一个基本的计算器,支持加、减、乘、除运算。以下是一个完整的实现代码示例: <?php $result = ""; if ($_SERVER["REQUES…

php 函数实现

php 函数实现

PHP 函数实现基础 PHP 函数的定义使用 function 关键字,后跟函数名和参数列表。函数名不区分大小写,但建议保持一致。 function functionName($param1, $p…