openssl_sign和openssl_verify实现支付接口

1.首先要了解,银行和那些网络钱包接口的原理

首先你会有一个公钥和私钥,私钥给了银行用来解密你发的信息。开始你用你的公钥加密订单信息,发送给银行,银行用私钥解密,如果证明是你发的信息,就用你的公钥加密返回信息传给你,你再用私钥解密。

RSA/DSA/SHA/MD5

  非对称加密的算法有很多,比较著名的有RSA/DSA ,不同的是RSA可以用于加/解密,也可以用于签名验签,DSA则只能用于签名.至于SHA则是一种和md5相同的算法,它不是用于加密解密或者签名的,它被称为摘要算法.就是通过一种算法,依据数据内容生成一种固定长度的摘要,这串摘要值与原数据存在对应关系,就是原数据会生成这个摘要,但是,这个摘要是不能还原成原数据的,嗯....,正常情况下是这样的,这个算法起的作用就是,如果你把原数据修改一点点,那么生成的摘要都会不同,传输过程中把原数据给你再给你一个摘要,你把得到的原数据同样做一次摘要算法,与给你的摘要相比较就可以知道这个数据有没有在传输过程中被修改了.

  实际应用过程中,因为需要加密的数据可能会很大,进行加密费时费力,所以一般都会把原数据先进行摘要,然后对这个摘要值进行加密,将原数据的明文和加密后的摘要值一起传给你.这样你解开加密后的摘要值,再和你得到的数据进行的摘要值对应一下就可以知道数据有没有被修改了,而且,因为私钥只有你有,只有你能解密摘要值,所以别人就算把原数据做了修改,然后生成一个假的摘要给你也是不行的,你这边用密钥也根本解不开.

2.解释openssl_sign和openssl_verify的参数

openssl_sign:

data

需要加密的数据

signature

加密完成后生成的数据

pub_key_id

公钥

signature_alg

加密的算法

openssl_sign($signStr,$sign_info,$merchant_private_key,OPENSSL_ALGO_MD5);

openssl_verify:

data

传过来没有加密的数据

signature

传过来加密过的数据

pub_key_id

私钥

signature_alg

加密算法

$flag = openssl_verify($signStr,$sign,$dinpay_public_key,OPENSSL_ALGO_MD5)

当最后接收到服务器返回的信息用私密解密以后,得到$flag为1表示验签成功,0便是验签失败。

这些看不懂也没关系,可以去我的GitHub查看例子。例子是我用go转接的,通俗易懂。喜欢的请点赞一下。

GitHub支付接口代码

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值