接口返回的数据也是加密的,需要对数据解密才能看到返回的数据是否正确,就需要用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);
上面是我收集的一些视频资源包
对于软件测试的的朋友来说应该是最全面最完整的备战仓库了,为了更好地整理每个模块,我也参考了很多网上的优质博文和项目,力求不漏掉每一个知识点,很多朋友靠着这些内容进行复习,拿到了BATJ等大厂的offer,这个仓库也已经帮助了很多的软件测试的学习者,希望也能帮助到你!
关注我的微信公众号【程序员二黑】免费获取
如果你对软件测试、接口测试、自动化测试、面试经验交流感兴趣欢迎加入:软件测试技术群:785128166 里面有大牛分享学习经验