介面回傳的資料也是加密的,需要對資料解密才能看到回傳的資料是否正確,就需要用RSA解密,
回傳資料的決議可以在postman的Tests進行后置處理,獲取加密后的回傳資料:
var data =https://www.cnblogs.com/software-test-Python/p/ 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);
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/263687.html
標籤:其他
下一篇:什么是Eolinekr
