导航:首页 > 源码编译 > 916cnn

916cnn

发布时间:2024-07-12 02:02:30

Ⅰ 用php如何实现数字签名啊··跪求高人指点···

以下是资料:

php中数字签名与校验

1. 先用php生成一对公钥和私钥

$res = openssl_pkey_new();
openssl_pkey_export($res,$pri);
$d= openssl_pkey_get_details($res);
$pub = $d['key'];
var_mp($pri,$pub);

输出依次为私钥和公钥的pem字串,如:

string(916) "-----BEGIN PRIVATE KEY-----

wsETi80b4ZyYlYUSsAtvS7ZG+GSLAox24TKNwWIy5cUdKfK/5QEJjZ0S8LjRSYCG
+8z

+st3fjEblEfcPcoIq5uiKx2bnO3
f9g0yt+
+UI8OhmLbw/Vyh6Ii1glwMfyq
VS2lAakj9d1hqLYZvw+eNeZBnzZNPuMJg5aj/WKUqasCQQDHiFLS7Yb1rbhfjmRt
ZL4zXuvX1hVjTNo2TeZwPniGpYa+QHcauDDep5C9q//n+D+ZtkbkECxpOVhrUHSI
+
+a2epF/YENEtjL6N2RE8Y+0oTdlwr

b4dQkRkfqCHtyrWOeRcC1Y6FyTfNj+cRBzdIcmFc21hxj6HKy2M6/XGI3rAE5L+B
mmlSmN1enhoCUqc=
-----END PRIVATE KEY-----
"
string(272) "-----BEGIN PUBLIC KEY-----
+Y4dUMLBE4vNG+Gc
+UBCY2dEvC40UmAhraPS5MEE0Ky
mPAQV1QkEEt1V0as+KJ/W5nBksizCur0MbfTZyaZOmgZiRO89+fvM00y8HVG2GjA
HGKq7GA34AUjQYMGwwIDAQAB
-----END PUBLIC KEY-----
"

2. 保存好自己的私钥,把公钥可以公开给别人。如果需要对某数据进行签名,证明那数据是从你这里发出的,就需要用私钥:

$res = openssl_pkey_get_private($pri);
if (openssl_sign('hello', $out, $res))
var_mp(base64_encode($out));

上例中 $pri 为自己的私钥,'hello' 为待签名的数据,如果签名成功,最后输出为base64编码后的签名,如:

j19H+C/NQEcyowezOQ+gmGi2UoPJNXyJ+/p/pp7il+xGz2aUWdOXkJFgIc/+ieokMLFm9cmtN2hGag9vq1s=

3. 别人收到你的数据 'hello' 和签名字串,想验证这是从你发来的数据的话,用你公开的公钥验证:

$sig = base64_decode($sig);
$res = openssl_pkey_get_public($pubkey);
if (openssl_verify('hello', $sig, $res) === 1)
; // 通过验证

上例中刚开始的 $sig 为之前你base64编码过的签名, $pubkey 为你的公钥

php中这种签名使用的是RSA算法;数字签名可以在 单点登录 等系统中派上用场。

阅读全文

与916cnn相关的资料

热点内容
phpexif信息 浏览:540
单片机三字节浮点数 浏览:754
命令与征服泰伯利亚战争下载 浏览:376
c窗口界面编程 浏览:21
hypermill编程能做模板吗 浏览:780
计算机网络最经典的算法 浏览:626
华为思科的配置命令 浏览:869
linux设置光盘启动 浏览:359
程序员俱乐部注册 浏览:17
洗洁精鸡蛋盘解压视频 浏览:291
企业内网加密app 浏览:49
腾讯云服务器怎么设置本地网络 浏览:623
日常程序员 浏览:513
哪个pe有bit加密功能 浏览:108
rust服务器是用什么ip 浏览:692
java随机字符串生成 浏览:551
数码宝贝编程人物 浏览:390
php多用户建站系统 浏览:624
加密防盗地上栓价位 浏览:671
比泽尔压缩机下载 浏览:421