接口返回的数据也是加密的,需要对数据解密才能看到返回的数据是否正确,就需要用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);

最新文章

  1. Request.Form接收不到post数据.
  2. unity, 只发射一个粒子的粒子系统
  3. [转]C#之反射
  4. 远程连接centos
  5. 基于 Koa平台Node.js开发的KoaHub.js的控制器,模型,帮助方法自动加载
  6. java并发之同步辅助类(Semphore、CountDownLatch、CyclicBarrier、Phaser)
  7. Android studio导出配置
  8. Git 忽略提交 .gitignore
  9. Django学习笔记(1)--第一个项目
  10. 基于Redis的分布式锁真的安全吗?
  11. 末学者笔记--Linux网络模式及网卡配置
  12. python基础中的四大天王-增-删-改-查
  13. sublime text3 的汉化
  14. luogu P3201 [HNOI2009]梦幻布丁
  15. vue router history模式开发ngnix配置
  16. SAP PP顾问面试题及资料
  17. HTML表格元素
  18. px 和 em 的区别
  19. linux服务器---安装swat
  20. centos 7修改系统支持中文编码

热门文章

  1. java注解基础入门
  2. Java并发编程之同步/并发集合
  3. Mac下安装lightgb并在jupyter中使用
  4. 设计vue3的请求实体工厂
  5. 浏览ASP.NET网页(6)
  6. MySQL常见的七种锁详细介绍()
  7. MyBatis-Plus笔记(入门)
  8. Go-22-方法
  9. 11. VUE 数组操作
  10. Jenkins 分布式和并发构建