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

发表于:2021-3-09 09: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);

  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号