当前位置:首页 > PHP

php rsa 实现

2026-02-13 16:28:57PHP

RSA 加密实现

在 PHP 中实现 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);
$publicKey = $publicKey["key"];

// 要加密的数据
$data = "Hello, RSA!";

// 使用公钥加密
openssl_public_encrypt($data, $encrypted, $publicKey);
$encrypted = base64_encode($encrypted);

// 使用私钥解密
openssl_private_decrypt(base64_decode($encrypted), $decrypted, $privateKey);

echo "Original: $data\n";
echo "Encrypted: $encrypted\n";
echo "Decrypted: $decrypted\n";

RSA 签名验证

RSA 也可用于数字签名:

php rsa 实现

// 创建签名
openssl_sign($data, $signature, $privateKey, OPENSSL_ALGO_SHA256);
$signature = base64_encode($signature);

// 验证签名
$valid = openssl_verify($data, base64_decode($signature), $publicKey, OPENSSL_ALGO_SHA256);

echo "Signature: $signature\n";
echo "Verification: " . ($valid ? "Valid" : "Invalid") . "\n";

密钥存储

生成的密钥可以保存到文件中:

// 保存公钥
file_put_contents('public.pem', $publicKey);

// 保存私钥
file_put_contents('private.pem', $privateKey);

// 从文件加载密钥
$publicKey = file_get_contents('public.pem');
$privateKey = file_get_contents('private.pem');

注意事项

  • 密钥长度至少应为 2048 位以确保安全性
  • 私钥必须严格保密
  • 加密数据长度不能超过密钥长度减去填充长度
  • 对于大数据,应使用对称加密,仅用 RSA 加密对称密钥

标签: phprsa
分享给朋友:

相关文章

php实现分页

php实现分页

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

php 队列的实现

php 队列的实现

PHP 队列的实现方法 使用数据库实现队列 创建一个数据表存储队列任务,包含任务ID、状态、创建时间等字段。通过SQL语句实现任务的入队和出队操作。 // 入队操作 INSERT INTO queu…

php mvc 实现

php mvc 实现

PHP MVC 实现方法 MVC(Model-View-Controller)是一种设计模式,用于分离应用程序的逻辑、数据和界面。以下是实现PHP MVC框架的关键步骤。 目录结构 创建以下目录结构…

php变量的实现

php变量的实现

PHP变量的实现机制 PHP变量的实现基于Zend引擎的底层数据结构。核心结构体zval用于存储变量类型和值,其设计允许动态类型转换和高效内存管理。 zval结构体 PHP变量通过zval结构体实现…

php 实现https

php 实现https

在 PHP 中实现 HTTPS 确保 PHP 应用通过 HTTPS 协议安全传输数据,可以通过以下几种方式实现: 配置服务器强制 HTTPS 在 Web 服务器(如 Apache 或 Nginx)中…

php实现异步图片上传

php实现异步图片上传

异步图片上传的实现方法 在PHP中实现异步图片上传通常需要结合前端JavaScript和后端PHP代码。以下是几种常见的方法: 使用XMLHttpRequest或Fetch API 前端使用Java…