当前位置:首页 > PHP

rsa算法实现php

2026-02-16 06:12:09PHP

RSA算法简介

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

PHP实现RSA算法

在PHP中,可以通过openssl扩展来实现RSA加密。以下是一个完整的实现示例:

<?php
// 生成密钥对
$config = array(
    "digest_alg" => "sha512",
    "private_key_bits" => 4096,
    "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 = "This is a secret message";

// 使用公钥加密
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";
?>

密钥生成与存储

生成的密钥可以保存到文件中以便后续使用:

// 保存私钥到文件
file_put_contents('private.key', $privateKey);

// 保存公钥到文件
file_put_contents('public.key', $publicKey);

// 从文件读取密钥
$privateKey = file_get_contents('private.key');
$publicKey = file_get_contents('public.key');

签名与验证

RSA也可用于数字签名:

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

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

if ($verify == 1) {
    echo "Signature is valid";
} else {
    echo "Signature is invalid";
}

注意事项

PHP的openssl扩展需要启用,可以通过php.ini文件中的extension=openssl来开启。密钥长度建议至少2048位,更高安全性可使用4096位。加密数据长度不能超过密钥长度减去11字节。

rsa算法实现php

对于大量数据的加密,建议使用对称加密算法如AES加密数据,再用RSA加密对称密钥。

标签: 算法rsa
分享给朋友:

相关文章

php 实现算法

php 实现算法

PHP 实现常见算法的方法 PHP 作为一门服务器端脚本语言,可以实现多种算法。以下是一些常见算法的 PHP 实现示例。 排序算法 冒泡排序 function bubbleSort($array)…

php 实现共识算法

php 实现共识算法

PHP 实现共识算法的基础方法 共识算法是分布式系统中确保数据一致性的核心机制,PHP 可通过特定设计实现简化版本的共识逻辑。以下是常见实现方式: 基于Paxos的简化实现 Paxos 算法的 PH…

js实现贪心算法

js实现贪心算法

贪心算法简介 贪心算法是一种在每一步选择中都采取当前状态下最优(即最有利)的选择,从而希望导致结果是全局最优的算法。贪心算法常用于解决优化问题,如最短路径、最小生成树等。 贪心算法的基本步骤 贪心算…

算法js实现

算法js实现

JavaScript 算法实现基础 JavaScript 作为一门灵活且强大的编程语言,能够实现各种常见算法。以下是一些基础算法的 JavaScript 实现示例。 排序算法 快速排序是一种高效的排…

js算法实现

js算法实现

以下是JavaScript中常见的算法实现示例,涵盖排序、搜索、递归等经典场景: 排序算法 快速排序 function quickSort(arr) { if (arr.length <…

js实现冒泡算法

js实现冒泡算法

冒泡排序算法实现 冒泡排序是一种简单的排序算法,通过重复遍历数组,比较相邻元素并交换顺序错误的元素,直到整个数组有序。 基本实现 function bubbleSort(arr) { let l…