Postman报文进行解密之RSA私钥解密

2021-02-25  测试杰克 

接口返回的数据也是加密的,需要对数据解密才能看到返回的数据是否正确,就需要用RSA解密。

返回数据的解析可以在postman的Tests进行后置处理,获取加密后的返回数据:

var data = JSON.parse(responseBody);

var enc = data.data;

var encdata = enc.encdata;

var enckey = enc.enckey;
下面就对密文进行解密:

解密函数priencrypt(),需要把私钥和密文传递给它;

forge.pki.privateKeyFromPem(prienc_key)转换pem格式的公钥;

forge.util.decode64(密文)转码;

privateKey.decrypt()解密函数,把密文按照'RSAES-PKCS1-V1_5'填充方式解密成明文。

最后就得到了明文key,然后再使用key对返回的参数密文进行AES解密。

//--------RSA使用渠道私钥对密文(AES密码)进行解密-------------//

function priencrypt(pri_key,encdataText){

console.info('priencrypt_key:'+pri_key);

//注意此处上下的BEGIN PRIVATE KEY不要删除,框架自带的

const prienc_key = '-----BEGIN PRIVATE KEY-----\n'

+ pri_key

+ '\n-----END PRIVATE KEY-----';

var privateKey = forge.pki.privateKeyFromPem(prienc_key);

var decryptedText = privateKey.decrypt(forge.util.decode64(encdataText), 'RSAES-PKCS1-V1_5', {

md: forge.md.sha1.create(),

mgf1: {

md: forge.md.sha1.create()

}

});

console.info('pulencryptedText: '+ decryptedText);

return decryptedText;

}

// 第一次运行时从网络加载forgeJS,会导致请求失败

if(!pm.globals.has('forgeJS')){

console.log('request forge.js from ' + forge_url);

pm.sendRequest(forge_url, function (err, res) {

if (err) {

console.error(err);

} else {

console.info("request forgs.js: Succeed, please try again");

pm.globals.set('forgeJS', res.text());

}

}

);

}

eval(pm.globals.get('forgeJS'));

keyText = priencrypt(priencrypt_key,enckey);

66°|664 人阅读|0 条评论
登录 后发表评论