编程 使用PHP实现RSA算法生成数字的签名和验签

2024-11-17 05:02:38 +0800 CST views 2586

#关于如果生成公钥私钥的方法请看这篇文章 公钥私钥请看这里

<?php
$private_key = '-----BEGIN RSA PRIVATE KEY-----
MIICWwIBAAKBgQCEwLlhjT5UbnQ0czFnaVzQa59RAKzie+Y30jq/TGHDADPiRmqZ
yZd08O3S5sXh7BC3UaOYbIyA0xLdNCAyk53/ij3LyRa4pKrJihHJ7kNlSCUJuFei
TXdLE03InfJPTFSqaXodeAA08EOi8UuX2f0TiAZ/miM5xnhTxL2NsI8I5wIDAQAB
AoGAOEecUAcZTaImEbZkU3sPpix6NlUa9kmgqDmwPjmbmJgVZvCDcP9N/n3F1YuQ
iN8TlyQ9PvmF93eEn9Lhc4+xg2kQF9wnQp9gKQtmSZyd4Lw9NHvBy45Aj9iJSQQ/
jeMVZ+O0Yne//ErhL/X5DUOWGwcRKtw4qt7bf+u0VpcH+wECQQCIRllBIHqSEsSM
608o+mDdqmB//NloVaj0lpwG+cNnJ7iWWbv2d+qdTH0sIRsC+4WorZx0YfFJryi4
ZUYUF/sRAkEA+WI/MFO4TIFi3VAncyziRJxETNy+kzMxsyj4bLqb8KTrZs4P3oif
I71U4SrAr3c14xFekIfL6145WweLZQwUdwJAZ0+N0sXgpmT8BSlPNe27CdFknyL9
Xw+xqtuTJearsMR4N+OHj+6ROvcF3jKq27P7PEmB1ul5lzbnVAPTAOC9QQJAYPj/
MT+czsMROpXMgVDWu284b9r2kC68CLrJvx3hPXYjw1oleZcOqssYkmYZfyGP5rf+
WZ00glWlX+xTG/vSiQJAKVzxiohMqnUuNajLFXmUXgbYrCaL0prBV+qU9W7h8bd1
ymTh8N1UHKH+HzA5Hw8s/kt5vXDsTGB8SKlLuu8Wjg==
-----END RSA PRIVATE KEY-----';
 
$public_key = '-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCEwLlhjT5UbnQ0czFnaVzQa59R
AKzie+Y30jq/TGHDADPiRmqZyZd08O3S5sXh7BC3UaOYbIyA0xLdNCAyk53/ij3L
yRa4pKrJihHJ7kNlSCUJuFeiTXdLE03InfJPTFSqaXodeAA08EOi8UuX2f0TiAZ/
miM5xnhTxL2NsI8I5wIDAQAB
-----END PUBLIC KEY-----';
$pi_key =  openssl_pkey_get_private($private_key);
$pu_key = openssl_pkey_get_public($public_key);
$data = ["name"=>"芊诺网络","php"=>"7.1"];
$data = json_encode($data);
//公钥加密
echo "public key encrypt:\n";
openssl_public_encrypt($data,$encrypted,$pu_key);
$encrypted = base64_encode($encrypted);
echo $encrypted,"\n";
//私钥解密
echo "private key decrypt:\n";
openssl_private_decrypt(base64_decode($encrypted),$decrypted,$pi_key);
echo $decrypted,"\n";

//私钥签名
openssl_sign($data, $sign,$pi_key,OPENSSL_ALGO_SHA256);
$sign = base64_encode($sign);
echo "<br/>sign:".$sign;
//公钥验证
$res = openssl_verify($data, base64_decode($sign), $pu_key,OPENSSL_ALGO_SHA256);
echo "<br/>signverify:";
var_dump($res);

下篇文章我们介绍如何使用vue和后端进行加密交互。

复制全文 生成海报 php js go vue

推荐文章

在JavaScript中实现队列
2024-11-19 01:38:36 +0800 CST
JavaScript数组 splice
2024-11-18 20:46:19 +0800 CST
使用 Go Embed
2024-11-19 02:54:20 +0800 CST
PHP中获取某个月份的天数
2024-11-18 11:28:47 +0800 CST
防止 macOS 生成 .DS_Store 文件
2024-11-19 07:39:27 +0800 CST
从Go开发者的视角看Rust
2024-11-18 11:49:49 +0800 CST
20个超实用的CSS动画库
2024-11-18 07:23:12 +0800 CST
网络数据抓取神器 Pipet
2024-11-19 05:43:20 +0800 CST
Nginx 反向代理
2024-11-19 08:02:10 +0800 CST
介绍Vue3的静态提升是什么?
2024-11-18 10:25:10 +0800 CST
php curl并发代码
2024-11-18 01:45:03 +0800 CST
55个常用的JavaScript代码段
2024-11-18 22:38:45 +0800 CST
一键压缩图片代码
2024-11-19 00:41:25 +0800 CST
php常用的正则表达式
2024-11-19 03:48:35 +0800 CST
#免密码登录服务器
2024-11-19 04:29:52 +0800 CST
Vue3中的Store模式有哪些改进?
2024-11-18 11:47:53 +0800 CST
浏览器自动播放策略
2024-11-19 08:54:41 +0800 CST
如何配置获取微信支付参数
2024-11-19 08:10:41 +0800 CST
MyLib5,一个Python中非常有用的库
2024-11-18 12:50:13 +0800 CST
10个几乎无人使用的罕见HTML标签
2024-11-18 21:44:46 +0800 CST
MySQL 主从同步一致性详解
2024-11-19 02:49:19 +0800 CST
企业官网案例-芊诺网络科技官网
2024-11-18 11:30:20 +0800 CST
程序员茄子在线接单