当前位置:首页 > 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实现rsa

php实现rsa

PHP 实现 RSA 加密解密 RSA 是一种非对称加密算法,广泛应用于数据加密和数字签名。PHP 提供了 OpenSSL 扩展来支持 RSA 加密解密操作。 生成 RSA 密钥对 使用 OpenS…

php 实现算法

php 实现算法

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

js算法实现

js算法实现

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

排序算法 php实现

排序算法 php实现

以下是在PHP中实现常见排序算法的几种方法,每种算法均附上代码示例和简要说明: 冒泡排序 通过重复比较相邻元素并交换位置完成排序,时间复杂度为O(n²)。 function bubbleSort(…

php rsa 实现

php rsa 实现

RSA 加密实现 在 PHP 中实现 RSA 加密需要使用 openssl 扩展。以下是一个完整的 RSA 加密和解密示例: // 生成密钥对 $config = array( "priva…