PHP 实现RSA方式签名认证

本文介绍了PHP如何实现RSA方式的签名认证,包括基本请求规则、签名算法、注意事项以及秘钥对的生成和PHP中秘钥格式的校验。详细阐述了从确定待签名参数、排序、生成待签名字符串到生成和验证签名的步骤,并提供了PHP签名用例。

RSA签名规则实现:

基本请求规则

  • client商户发起请求时, 需要对请求参数生成签名。
  • service商户接收异步通知时,需要验证参数中的签名。
  • RSA方式签名 --> 商户需要创建一对RSA秘钥,将公钥传给平台(service),私钥自行留存用于生成签名。 同时平台也会提供一个公钥给商户,用于验证签名。

 

签名算法

  • Setp.1 确定待签名参数

在请求参数列表中,除去sign参数外,其他需要使用到的参数皆是要签名的参数。

在通知返回参数列表中,除去sign参数外,凡是通知返回回来的参数皆是要签名的参数。

  • Setp.2 对参数进行排序

对于待签名的所有参数,需要根据参数名首字符字典顺序(ascii值大小)排序,若遇到相同首字符,则判断第二个字符,以此类推。

  • Setp.3 生成待签名字符串

将排序后的待签名参数以“&“符号拼接, 形如:“参数名1=参数值1&参数名2=参数值2&….&参数名N=参数值N”。

  • Setp.4 生成签名/验证签名

生成签名:把待签名字符串与商户的私钥一同放入RSA的签名函数中进行签名运算,从而得到签名结果字符串(sign值)。

验证签名:把待签名字符串、平台提供的公钥、通知返回参数中的参数sign值三者一同放入RSA的签名函数中进行签名运算,来判断签名是否验证通过。

  • Setp.5 生成签名php用例
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值