这几天一直困扰的PHP RSA签名验证问题终于解决了,在这里记录一下。据我所知,国内大部分支付接口都支持RSA签名验证,有的甚至只提供RSA验签。

支付接口采用的算法列表(我遇到过的):建设银行网上银行 RSA签名(MD5withRSA)

联通短信支付 RSA签名(MD5withRSA/SHA1withRSA)

支付宝支持 DSA签名、RSA签名、MD5签名

PHP 验签

Sign 验签数据准备:公钥(Public key)

Sign签名(一般是base64加密过的)

Data参数(参数列表,Sign对应的参数值)

php的openssl扩展里已经封装好了验签的方法openssl_verify。

如果在Windows下的php.ini需要开启Openssl模块:extension=php_openssl.dll

这里再解释一下openssl_verify函数:int openssl_verify ( string $data , string $signature , mixed $pub_key_id [, int $signature_alg = OPENSSL_ALGO_SHA1 ] )

openssl_verify() 函数来验证sign签名是否正确,是通过指定的data数据和公钥相关的pub_key_id来实现的。

从支付接口获取到的公钥Public key,如下:—–BEGIN PUBLIC KEY—–

MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxJUb3d2QTkW67SILT33Y

GqmP8HmXqtXpM5DPKFibkMs2f6tk+52qe3aOb4/bryqG754o5s1Yg/9o9duwE3VL

If9tuFVQ6TSrN2cacjDNXsW3aIkk6HdBvytrj/XJePQIXmjZZjPGqbDdItmJxUI+

HXYDxiaZIe4kuVRA8FbKr6iZ5uW9bfO5N2GY+IncPFFZivDa2Xq8kuOwxyZXi+cX

4W9LnsYrkq3jZ5/9RGNGzXJMs+GkFUKFqaHWhqW5xAwsKQcD8xiLuwAHt6wGIfy1

R2yQQQwetK02i44MvKRCEX8tlUYvCvr0T38B3kX2hHgmIxP3Cpv5jbJts+mMD7cG

iQIDAQAB

—–END PUBLIC KEY—–

注意这个是2048位的公钥应该是9行或者10行,不能为1行,不然PHP的openssl_pkey_get_public无法读取,pub_key_id的结果为false,我就在这个上吃了大亏。如果没有—–BEGIN PUBLIC KEY—– 和 —–END PUBLIC KEY—– 可以自己加上,最后保存到一个rsa_public_key.pem文件中。像这样:

如果是1024位的公钥,应该是6行或者7行。

php支付系统验签开发,PHP支付接口RSA验证相关推荐

  1. 微信支付-通知验签始终不通过的问题

    记一次微信支付验签始终异常问题,折腾了两宿,最后是 body 有问题 o(╥﹏╥)o 这里使用的是 <dependency><groupId>com.github.wechat ...

  2. 2023全新个人免签约支付系统PHP源码 码支付系统 ThinkPHP6框架全开源 starpay2.0Beta

    starpay2.0Beta 2023全新个人免签约支付系统PHP源码 码支付系统 ThinkPHP6框架全开源 starpay2.0Beta 软件为开源程序,很好用,感谢老大的共享. 下载地址:ht ...

  3. iap php,PHP语言之华为应用内支付IAP验签

    背景描述 项目对接华为HMS SDK的应用内支付IAP SDK3.x以后,支付成功后,可从PurchaseResultInfo对象中获取到购买数据InAppPurchaseData及其签名数据,需要使 ...

  4. PHP语言之华为应用内支付IAP验签

    背景描述 项目对接华为HMS SDK的应用内支付IAP SDK3.x以后,支付成功后,可从PurchaseResultInfo对象中获取到购买数据InAppPurchaseData及其签名数据,需要使 ...

  5. java 微信支付吊起 验签等源码

    微信支付 自己以前没做过微信支付的时候很是迷茫,现把2020最新附上,直接上代码 吊起支付 public JsonResult wxPay(String ids) throws Exception { ...

  6. php phpseclib 验签,通联支付项目资料含demo.zip

    [实例简介] 移动,PC支付网页版接口规范与DEMO(适用手机网页.微信公众号) [实例截图] [核心代码] 通联支付项目资料含demo ├── 1.txt └── 通联支付项目资料含demo └── ...

  7. 【支付系统学习笔记】-二支付系统设计(支付网关设计)

    前言: 本文属于学习笔记,首先感谢原作者:凤凰牌老熊,博客链接:http://blog.lixf.cn/ 一 概述 在支付系统中,支付网关和支付渠道的对接是最核心的功能.其中支付网关是对外提供服务的接 ...

  8. 微信智慧支付日系统服务器崩溃,微信支付大面积出现故障 微信支付系统繁忙怎么解决 微信支付崩溃原因是什么...

    10月29日晚间,微信支付突然大面积出现故障,支付时显示错误,商家扫码枪显示失败,美团外卖.京东商城.滴滴出行等支持微信支付的软件中,均显示暂不能使用微信支付.如果直接用微信支付扫码付款,也会出现&q ...

  9. 【支付系统学习笔记】-二支付设计(银行卡支付)

    前言:   本文属于学习笔记,首先感谢原作者:凤凰牌老熊,博客链接:http://blog.lixf.cn/ 一 支付与交易 作者先明确了概念: 交易是生成订单:支付是对订单进行付款. 支付行为有多种 ...

最新文章

  1. 最新JAVA性能调优实战教程_java性能调优实战 - osc_9z8xc00s的个人空间 - OSCHINA - 中文开源技术交流社区...
  2. intellij idea2016 web项目创建
  3. 京东金融曹鹏:没有数据的金融科技公司是纸上谈兵
  4. 不知因果,何以谈优化?
  5. 网易云信助力中国航空工业集团,打造数字化云办公平台
  6. python读取只读word只读_人生苦短我学Python——Word处理之快速Word转PDF
  7. platform_SpringOne Platform 2016回顾
  8. java验证工具类(待验证)
  9. PHP多进程初探 --- 再次谈daemon进程
  10. zeppelin配置hive教程
  11. [NOIP2016 普及组] 海港
  12. 【MEMS传感器】BMI160九轴传感器SPI驱动
  13. 小程序发布上线流程_小程序如何发布?微信小程序发布流程很简单
  14. ChromeDriver的浏览器版本不支持解决办法
  15. 嵌入式面试经验分享1——应届生
  16. 潜艇空气独立推进系统的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  17. ffmpeg复杂滤镜-filter_complex
  18. 移动商务,还是短信商务?
  19. Linux命令篇:chmod 777 与 chmod +x
  20. 第一阶段:Python开发基础 day18 模块的使用(三)

热门文章

  1. R语言将文件名写入word并批量合并word
  2. 数学分析教程史济怀练习8.4
  3. 全国-城市-百度地图中心点坐标
  4. 如何解决访问github时出错
  5. 5-1厘米换算英尺英寸
  6. 税收问题的分析:已知税后收入求税前、年终奖一元陷阱的分析
  7. Perl 语言的重要价值体现
  8. Formz.Renderzone.Plus.v6.5.4-ISO 1CD (建模软件)
  9. s3c2440lcd寄存器配置
  10. 云创大数据入围“国家超级计算长沙中心2022年生态合作伙伴”