PHP实现API接口签名验证

项目需要向外部提供接口,供第三方网站调用,为了保证传输数据的安全性,给项目添加了签名认证的机制,过程大致如下:

一、由我们平台给第三方颁发一个appId和一个appSecret,appId用来传输,appSecret用来生成签名

二、第三方通过拼接appSecret生成签名sign,第三方将数据和appId一起传给我们平台

三、我们平台接收到数据后根据接收到的数据用同样的算法生成签名,通过比对签名确定来进行数据来源的有效性确认

部分代码如下:

一、appId和appSecret的存储表如下:

二、生成appId和appSecret的方法如下:

三、签名生成方法:

  1. 对所有请求参数进行字典升序排列;
  2. 将以上排序后的参数表进行字符串连接,如key1value1key2value2key3value3...keyNvalueN;
  3. app secret作为后缀,对该字符串进行SHA-1计算,并转换成16进制编码;
  4. 转换为全大写形式后即获得签名串

具体签名生成与对比的代码如下

四、在basecontroller中添加签名验证代码

转载:https://blog.csdn.net/weixin_41981080/article/details/105522957

weinxin
我的微信
把最实用的经验,分享给最需要的读者,希望每一位来访的朋友都能有所收获!
avatar

Comment

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: