CNode

RSA解密问题

问答
Iim-here发布于9 年前最后回复9 年前12 回复5021 浏览0 收藏

最近在做酷派支付验证,遇到签名验证问题,卡好久了。

源数据如下:

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脚本😂

查看回复

回复 (12)

S
solarhell#1·9 年前

我找下我以前写的...稍等

I
im-here#2·9 年前
引用 solarhell我找下我以前写的...稍等

@solarhell 好的,谢谢!

I
im-here#3·9 年前

@vanishcode 对啊。 文档里是这样写的:然后用RSA算法和解析出来的keys对签名sign进行解密得到的字符串 RSA 验签我是知道的,但是它文档里要求是解密,而且它给的php demo里确实是解密的

J
jiangzhuo#4·9 年前

v2看了一遍 这又看一遍 楼主说说多少的红包啊

I
im-here#5·9 年前
引用 jiangzhuov2看了一遍 这又看一遍 楼主说说多少的红包啊

@jiangzhuo 50 够不够😂😔 我有php版本的。就是不会翻译过来😔

J
jiangzhuo#6·9 年前
引用 im-here@jiangzhuo 50 够不够😂😔 我有php版本的。就是不会翻译过来😔

@imhered 我看了一遍那坨php7跑不了的代码,不够

S
solarhell#8·9 年前

楼主你这个Math 函数 文件发一下 songjiaxin2008 # gmail 我还以为你是BCMath...

I
im-here#9·9 年前
S
solarhell#10·9 年前

收到 我看下

I
im-here#11·9 年前
引用 solarhell收到 我看下

@solarhell 非常感谢!😶

参与回复
登录后即可参与回复。登录