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非对称加密签名验证相关推荐

  1. php利用openssl实现RSA非对称加密签名

    来源:http://www.webiji.com/archives/412 php利用openssl实现RSA非对称加密签名 1. 先用php生成一对公钥和私钥 $res = openssl_pkey ...

  2. linux下面C 利用openssl的AES库加密,解密

    OpenSSL提供了AES加解密算法的API const char *AES_options(void); AES算法状态,是全部支持或者是部分支持. 返回值:"aes(full)" ...

  3. C语言利用openSSL库AES模块加密

    概述 在密码学里面一共有3中分类: 1.对称加密/解密 对称加密比较常见的有DES/AES.加密方和解密方都持有相同的密钥.对称的意思就是加密和解密都是用相同的密钥. 2.非对称加密/解密 常见的加密 ...

  4. 使用php openssl扩展实现非对称加密

    php的openssl扩展可对数据进行签名,也可对数据进行非对称加密.非对称加密使用私钥加密,公钥解密. 这里介绍openssl实现非对称加密 可使用linux自带的RSA密钥生成工具openssl, ...

  5. linux配置文件密码加密工具,Linux下利用openssl对文件进行加密和解密

    转载地址:http://hi.baidu.com/edeed/item/99206a096b62d0e1ff240db8 --建立文件test.txt, 特意写入中英文# cd /tmp # echo ...

  6. 数据安全验证签名问题.RSA 与PKCS8的坑

    在做支付的涉及安全的时候,经常会 遇到很多情况,就是合作方在生成公钥和私钥的情况下都喜欢是RSA格式,对方要求未经过PKCS#8编码的私钥文件,这中格式对于js代码很容易实现,但是对于Java来就不是 ...

  7. java中使用openssl生成的rsa公私钥进行数据加解密_使用openssl生成RSA公钥和私钥对...

    在ubuntu上要使用openssl的话需要先进行安装,命令如下: sudo apt-get install openssl 安装完成就可以使用openssl了. 首先需要进入openssl的交互界面 ...

  8. IOS 逆向开发(一)密码学 非对称加密RSA

    IOS 逆向开发(一)密码学 RSA 1. 密码学发展简介 2. 非对称加密RSA产生过程 3. RSA 数学原理 3.1 离散对数问题 3.1.1 原根 3.2 欧拉函数Φ 3.3 欧拉定理 3.4 ...

  9. openssl 非对称加密 RSA 加密解密以及签名验证签名

    1. 简介 openssl  rsa.h 提供了密码学中公钥加密体系的一些接口, 本文主要讨论利用rsa.h接口开发以下功能 公钥私钥的生成 公钥加密,私钥解密 私钥加密,公钥解密 签名:私钥签名 验 ...

最新文章

  1. 有程序员称:阿里拼多多什么的跟hw相比,性价比都不高.....元芳,你怎么看?...
  2. 3dmax挤出制作窗花_「教程」3DMAX制作藤编家具模型,超实用教程,收藏备用
  3. 红队中易被攻击的一些重点系统漏洞整理
  4. git 32位_编译64位的BorderlessGaming
  5. 阿里面试题BIO和NIO数量问题附答案和代码
  6. WebAssembly 技术汇总
  7. 必背单词_初中英语:2000个必背单词(附音标)汇总,打印背完,3年考高分
  8. Oracle批量插入数据
  9. gitlab之主要目录介绍
  10. 20春学期《计算机应用基础》在线作业2,东大20春学期《计算机应用基础》在线平时作业2答案...
  11. java webservice 数组参数_LiveBOS Webservice传参类型为list数组
  12. 学习笔记(03):2020软考数据库系统工程师-基础知识培训视频-计算机系统--安全性可靠性与性能评测(一)...
  13. 施乐7855维修手册中文版_GE苏伊士MK-2EPHARM EDI模块维修、清洗、注意事项
  14. dot com过时了,个性域名“钱”景看好
  15. iOS直播APP流程和相关技术介绍
  16. golang识别身份证号
  17. 如何低成本快速积累用户,分享4种无脑式操作
  18. Python鼠标模拟
  19. 使用Python控制手机(二)关于淘宝的那些事
  20. python做个奶茶店程序

热门文章

  1. JSON的應用(Javascript Object Nonation)
  2. php数组第二位,PHP将二位数组按照第二维的某个元素的值进行排序
  3. java后台两个表关联查询_简单界面+JAVA后台+数据库实现页面对数据库的两张关联表操作...
  4. Java黑皮书课后题第2章:2.10(科学:计算能量)编写程序,计算将水从初始温度加热到最终温度所需的能量。程序应该提示用户输入水的重量(kg),以及水的初始温度、最终温度
  5. java追加一个sheet_(二)POI-创建一个sheet页,并添加行列数据
  6. loadrunner—事务、TPS
  7. 位向量 补码与无符号 加法与乘法 CSAPP学习笔记
  8. Hadoop学习总结:Map-Reduce的过程解析
  9. 【复现】CVE-2015-1635-HTTP.SYS远程执行代码漏洞(ms15-034)
  10. java中同步_在Java中的方法同步和语句同步(块同步) - Break易站