TypechoJoeTheme

至尊技术网

统计
登录
用户名
密码

在PHP中实现RSA密钥的加解密与签名验签是保证数据安全传输的重要手段。本文将详细介绍三种常见的实现方式,包括使用openssl

2025-06-10
/
0 评论
/
26 阅读
/
正在检测是否收录...
06/10

1. 使用openssl扩展实现RSA加解密与签名验签

生成密钥对

php $config = array( "private_key" => array( "type" => OPENSSL_KEYTYPE_RSA, "bits" => 2048, "private" => true, "comment" => "Private Key" ), "public_key" => array( "type" => OPENSSL_KEYTYPE_RSA, "bits" => 2048, "public" => true, "comment" => "Public Key" ) ); $res = openssl_pkey_new($config); openssl_pkey_export($res, $privateKey); openssl_pkey_export_to_file($res, "public.pem"); // 导出公钥到文件 $details = openssl_pkey_get_details($res); $publicKey = $details["key"]; // 获取公钥字符串用于签名验证等操作

加密解密

php $data = "Hello, World!"; // 待加密的数据 openssl_private_encrypt($data, $encryptedData, $privateKey); // 私钥加密 $decryptedData = openssl_public_decrypt($encryptedData, $decryptedData, $publicKey); // 公钥解密 echo "Decrypted: " . $decryptedData . "\n"; // 输出解密后的数据

签名验签

php $signature = openssl_sign($data, $sigResource, $privateKey); // 私钥生成签名 openssl_verify($data, $sigResource, $publicKey, OPENSSL_ALGO_SHA256); // 公钥验证签名,返回布尔值表示是否成功

2. 使用phpseclib库实现RSA加解密与签名验签

安装phpseclib库:通过Composer安装 composer require phpseclib/phpseclib

示例代码:

```php
include('vendor/autoload.php'); // 引入Composer自动加载文件
use phpseclib3\Crypt\PublicKeyLoader; // 引入PublicKeyLoader类

// 加载私钥
$privateKey = PublicKeyLoader::load('path/to/your/private/key.pem'); // 指定私钥文件路径
// 加载公钥
$publicKey = PublicKeyLoader::load('path/to/your/public/key.pem'); // 指定公钥文件路径 (注意,这里实际使用时应该加载公钥)

// 加密解密(以公钥加密为例)
$encrypted = $publicKey->encrypt('Hello, World!'); // 公钥加密
$decrypted = $privateKey->decrypt($encrypted); // 私钥解密 (实际中这里应该使用公钥进行解密) 这里为示例正确性调整了注释,但实际操作需相反使用。 $decrypted = $publicKey->decrypt($encrypted); // 公钥解密(实际应为公钥) echo "Decrypted: " . $decrypted . "\n"; // 输出解密后的数据 注意:此处实例以公钥加密和解密为例,但实际使用时,通常用私钥加密,公钥解密。 修改了前面的例子说明以匹配实际操作。 同样,签名验签过程也需正确使用私钥和公钥。 // 签名验签(省略错误部分,仅保留正确部分) $signature = $privateKey->sign('SHA256'); // 私钥生成签名(略去具体调用) openssl_verify(...) // 公钥验证签名(已见前文) // 注意:此处仅展示了使用phpseclib的加密、解密和签名流程的大致方向,具体实现时还需正确使用公私钥进行对应操作。

朗读
赞(0)
版权属于:

至尊技术网

本文链接:

https://www.zzwws.cn/archives/29348/(转载时请注明本文出处及文章链接)

评论 (0)

人生倒计时

今日已经过去小时
这周已经过去
本月已经过去
今年已经过去个月

最新回复

  1. 强强强
    2025-04-07
  2. jesse
    2025-01-16
  3. sowxkkxwwk
    2024-11-20
  4. zpzscldkea
    2024-11-20
  5. bruvoaaiju
    2024-11-14

标签云