导航:首页 > 源码编译 > 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相关的资料

热点内容
科鲁兹压缩机轴承 浏览:353
word文档转换成pdf文件找不到 浏览:27
组件注册命令 浏览:760
安卓大屏导航用的是什么运放 浏览:443
myandroidtools的备份 浏览:900
python爬虫天气预报 浏览:761
android70权限管理 浏览:749
魔兽辛迪加是什么服务器 浏览:471
电脑文件夹排序怎么自定义排序 浏览:41
android70机型 浏览:422
阿里程序员地位 浏览:183
js如何上传大文件到服务器地址 浏览:685
安卓系统2个卡怎么切换 浏览:182
vivoy9s手机怎么设置隐私相册加密 浏览:158
android加载网络数据 浏览:119
tc语言入门编程 浏览:339
加载器app源码大全 浏览:821
linux刷新hosts 浏览:620
cmd命令键盘 浏览:311
优盘空文件夹怎么删不掉 浏览:843