当前位置:首页 > PHP

rsa算法实现php

2026-02-16 06:12:09PHP

RSA算法简介

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

PHP实现RSA算法

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

rsa算法实现php

<?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";
?>

密钥生成与存储

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

rsa算法实现php

// 保存私钥到文件
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字节。

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

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

相关文章

rsa php实现

rsa php实现

RSA 加密算法在 PHP 中的实现 RSA 是一种非对称加密算法,广泛用于数据加密和数字签名。在 PHP 中,可以通过 OpenSSL 扩展实现 RSA 加密和解密。 生成 RSA 密钥对 使用…

php实现算法

php实现算法

PHP 实现常见算法的方法 PHP 可以实现多种算法,包括排序、搜索、递归、动态规划等。以下是几种常见算法的 PHP 实现方式。 冒泡排序(Bubble Sort) 冒泡排序通过多次遍历数组,每…

php 实现算法

php 实现算法

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

php 实现共识算法

php 实现共识算法

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

js实现贪心算法

js实现贪心算法

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

用js来实现所有算法

用js来实现所有算法

在 JavaScript 中实现所有算法是一个庞大的任务,因为算法种类繁多,涵盖数据结构、排序、搜索、图论、动态规划等多个领域。以下是部分常见算法的 JavaScript 实现示例,供参考: 排序算…