php rsa验证签名,php利用openssl实现RSA非对称加密签名验证
1. 先用php生成一对公钥和私钥
$res = openssl_pkey_new();
openssl_pkey_export($res,$pri);
$d= openssl_pkey_get_details($res);
$pub = $d[‘key’];
var_dump($pri,$pub);
2. 保存好自己的私钥,把公钥可以公开给别人。如果需要对某数据进行签名,证明那数据是从你这里发出的,就需要用私钥:
$res = openssl_pkey_get_private($pri);
if (openssl_sign(‘hello’, $out, $res))
var_dump(base64_encode($out));
上例中 $pri 为自己的私钥,’hello’
为待签名的数据,如果签名成功,最后输出为base64编码后的签名,如:
j19H+C/NQEcyowezOQ+gmGi2UoPJNXyJ+KwpkEzJ5u4qaRD3cY4qhfFfIosypypwJT
J4LjRYOIPNQMQm6ICj2nMdGfn/p/pp7il+xGz2aUWdOXkJFgIc/PGC95C9sLH04Tc6
QSuV5IMd9rjBjyv+ieokMLFm9cmtN2hGag9vq1s=
3. 别人收到你的数据 ‘hello’ 和签名字串,想验证这是从你发来的数据的话,用你公开的公钥验证:
$sig = base64_decode($sig);
$res = openssl_pkey_get_public($pubkey);
if (openssl_verify(‘hello’, $sig, $res) === 1)
; // 通过验证
上例中刚开始的 $sig 为之前你base64编码过的签名, $pubkey 为你的公钥
以下为网易一卡通直通车的过程分析
// Rsa的公私钥
$pubkey =
‘—–BEGIN PUBLIC KEY—–
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCurS+gyXEGyNxKcu1Ja0L6uN7/
TBMNQw/DgicvftExXrus1zTPL5jSe/fOjAqssO52Pla0UlugIAgazYn/HLjEWvtg
Sjsqi65R+4FbC95BROKR1qhsAo2xb25EZ/Ab94khxlYBTtAfSFcT9dIXP6rmmW2w
SlnIOSSxLplfj7I4jQIDAQAB—–END PUBLIC KEY—–
‘;
$prikey =
‘—–BEGIN RSA PRIVATE KEY—–
MIICXAIBAAKBgQDWglpJUgBrlolNz4cgRBxsD/Em8N+5g/IyFuEj0DqRG8jN8CIA
l8W/zdsPn8YBqaml9ovtySHhk2sRYWCGPTebFcS5EIrMJHtQaIv6VoaEI6hSfreK
RZ73/tMOoKivKwNBRKSLewhXdq5pc4sc00as4CrxDi1yPOk+ROyONCom9QIDAQAB
AoGAX0vbxnT6oNFowDuxAUGhCtTuQmmCSs12fJAzhxCL5ElepTbINFE41eQjLMbD
VZvFNWjZc1MGjUtLppYHJrvthlRw2dRHHd1adwy1TB1aPKvgkr/78a7YwQJrMl/1
/eIs7Ry/DqZatRCqeK0TTW6A+rlwmvtvJ2dO+mgO1DUWUwECQQD+kLSVcxqDAKY7
gyhlzDAfYQgdva4+jP1a2vXDP6A+9m7uEP/yRmUO9O/jsoE8s29ujBq6XnYA2KI8
vedny6NBAkEA17faaBMKkKNhWmSeHD+raBLc4xElQVXysvw7RPfBtjSEqouaDCBg
g1r1e054Pj+pyLWdjW0P7R7Y8FWVWHM6tQJAPKs6DoAfKmeGNpq8jv5J3cCfUY86
LrglTXjvp3fLdhX/PAebKB90yErBvU92k4PkI8GKQS5wCyWWDMnpk4gpwQJABUUPh9VXP7tOCIhGuIfxpwQ28zEbCOKRoD+7Lu8ig1H7H7NzWvJ7iRnyv0VmeJbTjfyp
0aelaPSE9jIRCO0ftQJBAKTyfoe6v6WjRmSQql2CVMCJ/0SyAjduJyzJDBLPgs+V
i0s+73mVYJihdjkA9chHKJwqJ0JIMvxUXNt2VTgwUVE=
—–END RSA PRIVATE KEY—–
‘;
$site_id=”95184″;
$order_id=”123″;
$order_time=”20120307120000″;
$user_id=”61981700″;
$urs=”someone@163.com”;
$reason=”1″;
$pts=”150″;
$sign=$site_id.””.$user_id.””.$order_id.””.$order_time.””.$urs.””.$reason.””.$pts;
$sign=sha1($sign);
$res = openssl_pkey_get_private($prikey);
if (openssl_sign($sign, $out, $res))
$sign=bin2hex($out);
$url=”http://esalesdev.163.com:8002/script/interface/dc_input?site_id=”.$site_id.”&order_id=”.$order_id.”&order_time=”.$order_time.”&user_id=”.$user_id.”&urs=”.$urs.”&reason=”.$reason.”&pts=”.$pts.”&sign=”.$sign;
print_r($url);
php rsa验证签名,php利用openssl实现RSA非对称加密签名验证相关推荐
- php利用openssl实现RSA非对称加密签名
来源:http://www.webiji.com/archives/412 php利用openssl实现RSA非对称加密签名 1. 先用php生成一对公钥和私钥 $res = openssl_pkey ...
- linux下面C 利用openssl的AES库加密,解密
OpenSSL提供了AES加解密算法的API const char *AES_options(void); AES算法状态,是全部支持或者是部分支持. 返回值:"aes(full)" ...
- C语言利用openSSL库AES模块加密
概述 在密码学里面一共有3中分类: 1.对称加密/解密 对称加密比较常见的有DES/AES.加密方和解密方都持有相同的密钥.对称的意思就是加密和解密都是用相同的密钥. 2.非对称加密/解密 常见的加密 ...
- 使用php openssl扩展实现非对称加密
php的openssl扩展可对数据进行签名,也可对数据进行非对称加密.非对称加密使用私钥加密,公钥解密. 这里介绍openssl实现非对称加密 可使用linux自带的RSA密钥生成工具openssl, ...
- linux配置文件密码加密工具,Linux下利用openssl对文件进行加密和解密
转载地址:http://hi.baidu.com/edeed/item/99206a096b62d0e1ff240db8 --建立文件test.txt, 特意写入中英文# cd /tmp # echo ...
- 数据安全验证签名问题.RSA 与PKCS8的坑
在做支付的涉及安全的时候,经常会 遇到很多情况,就是合作方在生成公钥和私钥的情况下都喜欢是RSA格式,对方要求未经过PKCS#8编码的私钥文件,这中格式对于js代码很容易实现,但是对于Java来就不是 ...
- java中使用openssl生成的rsa公私钥进行数据加解密_使用openssl生成RSA公钥和私钥对...
在ubuntu上要使用openssl的话需要先进行安装,命令如下: sudo apt-get install openssl 安装完成就可以使用openssl了. 首先需要进入openssl的交互界面 ...
- IOS 逆向开发(一)密码学 非对称加密RSA
IOS 逆向开发(一)密码学 RSA 1. 密码学发展简介 2. 非对称加密RSA产生过程 3. RSA 数学原理 3.1 离散对数问题 3.1.1 原根 3.2 欧拉函数Φ 3.3 欧拉定理 3.4 ...
- openssl 非对称加密 RSA 加密解密以及签名验证签名
1. 简介 openssl rsa.h 提供了密码学中公钥加密体系的一些接口, 本文主要讨论利用rsa.h接口开发以下功能 公钥私钥的生成 公钥加密,私钥解密 私钥加密,公钥解密 签名:私钥签名 验 ...
最新文章
- 有程序员称:阿里拼多多什么的跟hw相比,性价比都不高.....元芳,你怎么看?...
- 3dmax挤出制作窗花_「教程」3DMAX制作藤编家具模型,超实用教程,收藏备用
- 红队中易被攻击的一些重点系统漏洞整理
- git 32位_编译64位的BorderlessGaming
- 阿里面试题BIO和NIO数量问题附答案和代码
- WebAssembly 技术汇总
- 必背单词_初中英语:2000个必背单词(附音标)汇总,打印背完,3年考高分
- Oracle批量插入数据
- gitlab之主要目录介绍
- 20春学期《计算机应用基础》在线作业2,东大20春学期《计算机应用基础》在线平时作业2答案...
- java webservice 数组参数_LiveBOS Webservice传参类型为list数组
- 学习笔记(03):2020软考数据库系统工程师-基础知识培训视频-计算机系统--安全性可靠性与性能评测(一)...
- 施乐7855维修手册中文版_GE苏伊士MK-2EPHARM EDI模块维修、清洗、注意事项
- dot com过时了,个性域名“钱”景看好
- iOS直播APP流程和相关技术介绍
- golang识别身份证号
- 如何低成本快速积累用户,分享4种无脑式操作
- Python鼠标模拟
- 使用Python控制手机(二)关于淘宝的那些事
- python做个奶茶店程序
热门文章
- JSON的應用(Javascript Object Nonation)
- php数组第二位,PHP将二位数组按照第二维的某个元素的值进行排序
- java后台两个表关联查询_简单界面+JAVA后台+数据库实现页面对数据库的两张关联表操作...
- Java黑皮书课后题第2章:2.10(科学:计算能量)编写程序,计算将水从初始温度加热到最终温度所需的能量。程序应该提示用户输入水的重量(kg),以及水的初始温度、最终温度
- java追加一个sheet_(二)POI-创建一个sheet页,并添加行列数据
- loadrunner—事务、TPS
- 位向量 补码与无符号 加法与乘法 CSAPP学习笔记
- Hadoop学习总结:Map-Reduce的过程解析
- 【复现】CVE-2015-1635-HTTP.SYS远程执行代码漏洞(ms15-034)
- java中同步_在Java中的方法同步和语句同步(块同步) - Break易站