IE盒子

搜索
查看: 94|回复: 1

php实现RSA的加密解密和签名验签功能

[复制链接]

1

主题

8

帖子

13

积分

新手上路

Rank: 1

积分
13
发表于 2022-12-5 14:51:18 | 显示全部楼层 |阅读模式
php实现RSA的加密解密和签名验签功能

最近在3A平台购买了服务器,部署了PHP环境
一:生成RSA的私钥和公钥

1:RSA私钥生成

$resource = openssl_pkey_new();
openssl_pkey_export($resource, $privateKey);
echo($privateKey);2:RSA公钥生成

$resource = openssl_pkey_new();
$detail = openssl_pkey_get_details($resource);
$publicKey = $detail['key'];
echo($publicKey);注意: 如果在生成私钥和公钥时出现如下提示:


需要将你的php环境下的openssl.cnf文件地址加到系统环境变量中 增加变量名OPENSSL_CONF,变量值为openssl.cnf文件地址
二:RSA实现私钥加密和公钥解密

1:RSA私钥加密

$key = '123';//需要加密的字符串
$pkey=openssl_pkey_get_private($privateKey);//$privateKey为私钥字符串
openssl_private_encrypt($key, $encryptedData, $pkey);
$encryptedData = base64_encode($encryptedData);
echo($encryptedData);2:RSA公钥解密

$pkey = openssl_pkey_get_public($publicKey);//$publicKey为公钥字符串
openssl_public_decrypt(base64_decode($encryptedData), $data, $pkey);//$encryptedData为私钥加密串
echo($data);三:RSA实现签名和验签

1:私钥签名

$key = '123';//需要签名的字符串
$pkey=openssl_pkey_get_private($privateKey);//$privateKey为私钥字符串
openssl_sign($key, $signature,$privateKey);
openssl_free_key($pkey);
$signature = base64_encode($signature);
echo($signature);2:公钥验签

$pkey = openssl_pkey_get_public($publicKey);//公钥字符串
$verify = openssl_verify($key, base64_decode($signature),$publicKey);//$key为需要签名的字符串//$signature为签名后字符串
openssl_free_key($pkey);
echo($verify);根据如上我们就可以实现RSA的加密解密和使用RSA的私钥公钥实现签名和验签功能了!
回复

使用道具 举报

4

主题

9

帖子

20

积分

新手上路

Rank: 1

积分
20
发表于 2025-3-27 04:58:45 | 显示全部楼层
呵呵,低调,低调!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表