/组合签名

$a=time();

$b=substr($a, 1);

//生成随机订单号

$orderid= $b.mt_rand(10000,99999);

//合作身份者id,以2088开头的16位纯数字

$mygoods['partner']="2088011744308664";

//商家账号

$mygoods['seller']="2088011744308664";

//订单号

$mygoods['out_trade_no']=$orderid;

//主题

$mygoods['subject']=$goods_name;

//商品描述信息

$mygoods['body']=$goods_infro;

//商品价格

$mygoods['total_fee']=$score;

//服务器端异步响应地址

$mygoods['notify_url']= "http://211.149.220.47/php/notify_url.php";

//排序

$mygoods = argSort($mygoods);

//拼接

$mystr = createLinkstring($mygoods);

//签名

$sign = rsaSign($mystr);

//对签名进行urlencode转码

$sign = urlencode($sign);

//生成最终签名信息

$orderInfor = $mystr."&sign=".$sign."&sign_type=RSA";

/*******特殊的 验签支付宝反馈给App的签名信息*******/

//支付宝反馈给App端信息拆解如下

$str = 'body=%E7%B2%BE%E5%93%81%E5%84%BF%E7%AB%A5%E4%B9%A6%E5%8C%85%E5%96%9C%E6%B4%8B%E6%B4%8B%E7%9A%84&notify_url=http%3A%2F%2F211.149.220.47%2Fphp%2Fnotify_url.php&out_trade_no=40609294027478&partner=2088011744308664&seller=2088011744308664&subject=%E4%B9%A6%E5%8C%85&success=true&total_fee=0.01';

//被拆解后的支付宝签名

$sign = 'Itorzqous2F7kYWWOpmoB%2FJUYgySRzh%2FOOKMhVhv%2BM48CnFk%2BQCp2cKcSsNGcDTs2AsAk%2BRYTuyMYZkGH56t8jcV2GGFkrJr%2FPxcGRlEK08QadAhImYzy9piVjoW0102lhSJYapiXGBTl5eiZ88RiyRA62D2nJEtH%2FBVXpuq63A%3D';

//得到签名

$sign = urldecode($sign);

//得到待签名字符串

$str = urldecode($str);

//验签数据,验签成功将返回true 否则 flase

var_dump(verify($str, $sign));

/*************************需要使用到的方法*******************************/

/**

* 把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串

* @param $para 需要拼接的数组

* return 拼接完成以后的字符串

*/

function createLinkstring($para) {

$arg = "";

while (list ($key, $val) = each ($para)) {

$arg.=$key."=".$val."&";

}

//去掉最后一个&字符

$arg = substr($arg,0,count($arg)-2);

//如果存在转义字符,那么去掉转义

if(get_magic_quotes_gpc()){$arg = stripslashes($arg);}

return $arg;

}

/**

* 对数组排序

* @param $para 排序前的数组

* return 排序后的数组

*/

function argSort($para) {

ksort($para);

reset($para);

return $para;

}

/**

* RSA签名

* @param $data 待签名数据

* @param $private_key_path 商户私钥文件路径

* return 签名结果

*/

function rsaSign($data, $private_key_path) {

$priKey = file_get_contents($private_key_path);

$res = openssl_get_privatekey($priKey);

openssl_sign($data, $sign, $res);

openssl_free_key($res);

//base64编码

$sign = base64_encode($sign);

return $sign;

}

/**RSA验签

* $data待签名数据

* $sign需要验签的签名

* 验签用支付宝公钥

* return 验签是否通过 bool值

*/

function verify($data, $sign) {

//读取支付宝公钥文件

$pubKey = file_get_contents('key/alipay_public_key.pem');

//转换为openssl格式密钥

$res = openssl_get_publickey($pubKey);

//调用openssl内置方法验签,返回bool值

$result = (bool)openssl_verify($data, base64_decode($sign), $res);

//释放资源

openssl_free_key($res);

//返回资源是否成功

return $result;

}

PHP实现RSA签名生成订单功能【支付宝示例】

//组合签名 $a=time(); $b=substr($a, 1); //生成随机订单号 $orderid= $b.mt_rand(10000,99999); //合作身份者id,以2088开头的1 ...

Loadrunner时间函数、用时间生成订单编号例子

Loadrunner中取时间函数.用时间函数生成订单编号例子: 问题的提出: (1)有时候在Loadrunner中用C语言设计脚本 ...

RSA签名 python PHP demo 例子

python RSA+MD5签名demo: #!/usr/bin/env python2.7 #coding:utf-8 import base64 from Crypto.PublicKey imp ...

支付宝RSA签名

1.参考网上相关文章,开放php中的openssl,但使用网上例子调用openssl_pkey_new,一直报100013错误.后改用用支付宝提供的SDKdemo程序 发现使用提供的privkye,可 ...

用openssl生成SSL使用的私钥和证书,并自己做CA签名(转)

本 文记叙的是一次基于SSL的socket通讯程序开发中,有关证书,签名,身份验证相关的步骤. 我们的场景下,socket服务端是java语言编写的,客户端是c语言.使用了一个叫做matrixssl的 ...

使用OpenSSL做RSA签名验证 支付宝移动快捷支付 的server异步通知

因为业务须要.我们须要使用支付宝移动快捷支付做收款.支付宝给了我们见支付宝包. 支付宝给的serve ...

开发支付宝支付用DELPHI实现 RSA签名

近来根据业务需求 在ERP中集成了微信支付,支付宝支付,开发支付宝支付时最大的障碍就是RSA签名,找了很多资料,最终用 下了个libeay32.pas  根据网上资料最终解决了问题 function  ...

RSA密钥生成、加密解密、签名验签

RSA 非对称加密公钥加密,私钥解密 私钥签名,公钥验签 下面是生成随机密钥对: //随机生成密钥对 KeyPairGenerator keyPairGen = null; try { keyPair ...

支付宝RSA签名之Delphi实现

Delphi有个很大的问题就是,厂商的不作为(没有封装标准的Cipher类库),让大家自己造轮子. 今天的轮子就是RSA签名,由于Delphi没有封装Cipher类库,所以只的自己写了. 因为要在Fi ...

随机推荐

C#刨根究底:《你必须知道的.NET》读书笔记系列

一.此书到底何方神圣? 来自于微软MVP—王涛(网名:AnyTao,博客园大牛之一,其博客地址为:http://anytao.cnblogs.com/)的最新技术心 ...

Centos安装Memcached和(Nginx)Memcache扩展详细教程

下载memadmin,下载地址:http://www.junopen.com/memadmin/ 并在IIS新建站点. 测试地址:http://wap.yousawang.com/mem , 1.重启 ...

javascript中获取屏幕尺寸

Javascript获取获取屏幕.浏览器窗口 ,浏览器,网页高度.宽度的大小 屏幕的有效宽:window.screen.availHeight屏幕的有效高:window.screen.availWid ...

centos 7.0 ln命令 和chkconfig 命令介绍 开机自动启 服务

有时候centos需要 程序开机启动的时候  自启动 首先在 /etc/init.d/ cd /etc/init.d 文件夹下建立开机启动项 使用ln命令 使用方式 : ln [options] so ...

Javascript的怪癖

1.匿名函数在不闭包的情况下this对象为window,而在双匿名闭包的情况下内部匿名函数的this对象为window. 2.在函数中定义变量,在函数外部想使用该变量,如果变量声明时有var,则访问不 ...

打开Excel时提示"您尝试打开的文件**.xls的格式与文件扩展名指定的格式不一致"

问题描述:     系统安装了WPS时,Analyzer导出excel时候,会提示"您尝试打开的文件**.xls的格式与文件扩展名指定的格式不一致",这是Excel的安全问题,   ...

ZOJ1586——QS Network(最小生成树)

QS Network DescriptionIn the planet w-503 of galaxy cgb, there is a kind of intelligent creature nam ...

KEIL、uVision、RealView、MDK、KEIL C51区别比较

KEIL uVision,KEIL MDK,KEIL For ARM,RealView MDK,KEIL C51,KEIL C166,KEIL C251 从接触MCS-51单片机开始,我们就知道有一个 ...

分享 C++图像处理的代码简易示例

采用Decoder:stb_image https://github.com/nothings/stb/blob/master/stb_image.h 采用Encoder:tiny_jpeghttps ...

Go基础系列:互斥锁Mutex和读写锁RWMutex用法详述

sync.Mutex Go中使用sync.Mutex类型实现mutex(排他锁.互斥锁).在源代码的sync/mutex.go文件中,有如下定义: // A Mutex is a mutual exc ...

php+rsa生成签名sign,PHP 做 RSA 签名 生成订单(支付宝例子)相关推荐

  1. 支付宝签名php,PHP实现RSA签名生成订单功能【支付宝示例】

    PHP实现RSA签名生成订单功能[支付宝示例] 来源:中文源码网    浏览: 次    日期:2018年9月2日 [下载文档:  PHP实现RSA签名生成订单功能[支付宝示例].txt ] (友情提 ...

  2. RSA密钥生成、加密解密、数据签名验签

    公钥.私钥生成 准备工作,基础的帮助类 使用java代码生成公钥私钥 使用openssl生成公钥私钥 加解密 数据签名及验签 数据加解密及签名验签测试 注意项 公钥.私钥生成 准备工作,基础的帮助类 ...

  3. 用 openssl 生成 SSL 使用的私钥和证书,并自己做 CA 签名

    一.生成 CA 证书 1.生成 CA 的公私钥对. openssl genrsa -out ca.key 1024 2.生成 CA 的自签名证书,签名使用的私钥为 ca.key . openssl r ...

  4. ios rsa java_一篇搞定RSA加密与SHA签名|与Java完全同步

    本文是投稿文章,作者:Panda_iOS 看到这篇文章的同学可幸福了,当时在做RSA加密与签名的时候网上的资料简直不要太老,做完后实在是忍受不下去了,这篇文章我会详细讲解iOS如何实现RSA加密与签名 ...

  5. rsa 2048 java_使用SHA-256和RSA 2048进行加密和签名

    介绍 由于SHA-1和RSA-1024已过时且安全性较低,因此SHA-256和RSA 2048是当前的标准.SHA-256是一种非常好的安全散列算法,非常适合在证书上使用,而2048位RSA是一种很好 ...

  6. Go-数字签名详解与Rsa数字签名代码

    目录 数字签名概述 数字签名和手写签名的不同 数字签名与消息加密/认证 数字签名的步骤 Go中使用Rsa进行数字签名 crypto/rsa包 crypto/sha512包 代码 截图 参考 数字签名概 ...

  7. STM32F1做RSA,AES数据加解密,MD5信息摘要处理

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/qq_31878855/article/ ...

  8. python rsa库_Python中rsa模块【sign 加签验签】的使用

    安装 pip install rsa 使用一 说明:简单入门使用  使用公钥加密  ----------->> 使用私钥进行解密 1 #-*- coding:utf-8 -*- 2 imp ...

  9. linux C++ 使用openssl rsa算法实现对计算机物理地址进行签名和认证

    首先需要使用openssl生成公钥和私钥,然后对字符串进行签名和认证. license.h #pragma once #include <iostream> #include <st ...

最新文章

  1. 【Android】3.0 第3章 百度地图及其应用--预备知识
  2. Py之pyttsx:pyttsx/pyttsx3​​​​​​​的简介、安装、使用方法之详细攻略
  3. 通过Servlet的response绘制页面验证码
  4. final 数组 java_Java Final数组列表
  5. 【编程】用户体验与软件产品
  6. IP通信基础学习第十周
  7. matlab作图显示中文正常,保存图片中文乱码
  8. 【Android学习笔记】【Android开发环境搭建】安装JDK
  9. Java简答题库_java题库3-简答题.doc
  10. Idea 格式化代码 Idea设置快捷键 格式化代码
  11. ecshop ectouch 不支持html,ECShop上传的商品图片在ECTouch不能显示,怎么解决
  12. 无法访问https://element.eleme.cn和https://element.eleme.io
  13. html botton定位的俩种方法
  14. 端端正正做人,踏踏实实做事
  15. 周鸿祎杀出的一片红海:杀毒软件的死伤现场
  16. 如何拿下头条号原创标?这里有份6000字的指南
  17. 简易在线投票系统(php)——前端设计(html部分)
  18. 使用Matplotlib进行Python绘图(指南)
  19. 好玩的 css3 炫酷属性
  20. Oracle 11g版本下载及安装超详细教程图解

热门文章

  1. debian10 raid5+lvm
  2. SpringCloud Alibaba微服务实战(二) - Nacos服务注册与restTemplate消费
  3. LeetCode简单题之基于排列构建数组
  4. 服务器BMC、BIOS、IPMI、UEFI技术解析
  5. 自动驾驶仿真分析,提高研发效率
  6. 国内操作系统OS分析(下)
  7. ADB 查看 crash log
  8. Android 属性动画(Property Animation) ObjectAnimator的介绍
  9. Fragment里面嵌套Fragment注意事项
  10. css中的display属性之li元素