当前位置:首页 > PHP

rsa php实现

2026-04-03 14:36:29PHP

RSA 算法简介

RSA 是一种非对称加密算法,广泛应用于数据加密和数字签名。它基于大数分解的数学难题,使用公钥加密、私钥解密的机制。

PHP 实现 RSA 加密解密

生成密钥对

使用 openssl_pkey_new 生成 RSA 密钥对:

rsa php实现

$config = array(
    "digest_alg" => "sha512",
    "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"];

加密数据

使用公钥加密数据:

$data = "Secret message";
openssl_public_encrypt($data, $encrypted, $publicKey);
$encryptedBase64 = base64_encode($encrypted);

解密数据

使用私钥解密数据:

rsa php实现

openssl_private_decrypt(base64_decode($encryptedBase64), $decrypted, $privateKey);
echo $decrypted; // 输出: Secret message

RSA 签名与验证

生成签名

使用私钥生成签名:

openssl_sign($data, $signature, $privateKey, OPENSSL_ALGO_SHA256);
$signatureBase64 = base64_encode($signature);

验证签名

使用公钥验证签名:

$isValid = openssl_verify($data, base64_decode($signatureBase64), $publicKey, OPENSSL_ALGO_SHA256);
echo $isValid === 1 ? "Valid" : "Invalid";

注意事项

  • 密钥长度建议至少 2048 位以保证安全性
  • 存储私钥时需要严格保密
  • 实际应用中应考虑使用 HTTPS 等安全传输协议
  • 生产环境建议使用专业的加密库而非自行实现

完整示例代码

// 生成密钥
$config = array(
    "digest_alg" => "sha512",
    "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"];

// 加密
$data = "Secret message";
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);

// 验证
$isValid = openssl_verify($data, base64_decode($signatureBase64), $publicKey, OPENSSL_ALGO_SHA256);
echo $isValid === 1 ? "Valid" : "Invalid";

标签: rsaphp
分享给朋友:

相关文章

php 路由实现

php 路由实现

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

php实现接口

php实现接口

PHP 实现接口的方法 在 PHP 中,接口(Interface)用于定义一组方法的规范,而不实现具体功能。类可以实现一个或多个接口,并必须实现接口中定义的所有方法。 定义接口 接口使用 inter…

php 实现下载

php 实现下载

PHP 实现文件下载的方法 使用 PHP 实现文件下载可以通过设置 HTTP 头信息,强制浏览器将文件作为附件下载而非直接打开。 基本下载实现 $file_path = 'path/to/your/…

php实现https

php实现https

PHP 实现 HTTPS 请求 在 PHP 中实现 HTTPS 请求,可以通过多种方式完成,包括使用内置函数、cURL 扩展或第三方库。以下是几种常见的方法: 使用 file_get_content…

php https实现

php https实现

PHP 中实现 HTTPS 的方法 在 PHP 中实现 HTTPS 主要通过配置服务器和编写代码来确保通信的安全性。以下是几种常见的方法: 配置服务器支持 HTTPS 确保服务器已安装 SSL/T…

php实现评论功能

php实现评论功能

数据库设计 创建评论表(示例结构): CREATE TABLE `comments` ( `id` int(11) NOT NULL AUTO_INCREMENT, `user_id`…