最近在做酷派支付验证,遇到签名验证问题,卡好久了。
源数据如下:
var trans_data = '{"exorderno":"10004200000001100042","transid":"02113013118562300203","waresid":1,"appid":"20004600000001200046","feetype":0,"money":3000,"count":1,"result":0,"transtype":0,"transtime":"2013-01-31 18:57:27","cpprivate":"123456"}';
var key = 'MjhERTEwQkFBRDJBRTRERDhDM0FBNkZBMzNFQ0RFMTFCQTBCQzE3QU1UUTRPRFV6TkRjeU16UTVNRFUyTnpnek9ETXJNVE15T1RRME9EZzROVGsyTVRreU1ETXdNRE0zTnpjd01EazNNekV5T1RJek1qUXlNemN4';
var sign = '28adee792782d2f723e17ee1ef877e7 166bc3119507f43b06977786376c0434 633cabdb9ee80044bc8108d2e9b3c86e';
这个key经过2次base64_decode拿到的有效数据为:14885347234905678383+132944888596192030037770097312923242371
其中+的前面为privatekey,后面为modkey
文档里是这样写的: key = base64(${private_key}+${mod_key}),即key是由private_key和mod_key中间用加号“+”连接后做了base64编码得到的字符串。商户需要先把private_key和mod_key从key中解析出来。然后用RSA算法和解析出来的keys对签名sign进行解密得到的字符串,与将transdata进行MD5加密后的字符串进行比较。如果两者相等,则签名验证通过。
我在网上有找到这个:RSAKeyPair
,但是都只有说加密,没说解密,我找到了它的解密函数,但是解出来是乱码
我自己先用简单的数据加密,然后再调它的解密,出来还是乱码。
对加解密这块的知识实在是匮乏,求各位大神帮忙,解决了红包感谢!
我现在临时的解决方案是:解密算法用php实现的,然后用node执行php脚本😂
我找下我以前写的…稍等
@solarhell 好的,谢谢!
@vanishcode 对啊。 文档里是这样写的:然后用RSA算法和解析出来的keys对签名sign进行解密得到的字符串 RSA 验签我是知道的,但是它文档里要求是解密,而且它给的php demo里确实是解密的
v2看了一遍 这又看一遍 楼主说说多少的红包啊
@jiangzhuo 50 够不够😂😔 我有php版本的。就是不会翻译过来😔
@imhered 我看了一遍那坨php7跑不了的代码,不够
@jiangzhuo 那就100吧😔☹️ 可以吗?
楼主你这个Math 函数 文件发一下 songjiaxin2008 # gmail 我还以为你是BCMath…
@solarhell 我把整个php demo发给您了。 谢谢!
收到 我看下
@solarhell 非常感谢!😶