Postman报文进行解密之RSA私钥解密
接口返回的数据也是加密的,需要对数据解密才能看到返回的数据是否正确,就需要用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);
最新文章
- Request.Form接收不到post数据.
- unity, 只发射一个粒子的粒子系统
- [转]C#之反射
- 远程连接centos
- 基于 Koa平台Node.js开发的KoaHub.js的控制器,模型,帮助方法自动加载
- java并发之同步辅助类(Semphore、CountDownLatch、CyclicBarrier、Phaser)
- Android studio导出配置
- Git 忽略提交 .gitignore
- Django学习笔记(1)--第一个项目
- 基于Redis的分布式锁真的安全吗?
- 末学者笔记--Linux网络模式及网卡配置
- python基础中的四大天王-增-删-改-查
- sublime text3 的汉化
- luogu P3201 [HNOI2009]梦幻布丁
- vue router history模式开发ngnix配置
- SAP PP顾问面试题及资料
- HTML表格元素
- px 和 em 的区别
- linux服务器---安装swat
- centos 7修改系统支持中文编码