待加密的报文称为,Postman中对报文进行AES+Base64加密请求

 2023-09-23 阅读 12 评论 0

摘要:要在postman中实现AES+Base64加密,需要在Postman中的Pre-request Script中写脚本。Pre-request Script是指在发送报文前执行的脚本,用于对请求包中的各种参数做一些个性化的处理。 var aesKey = "***"; if('POST' == request.m

要在postman中实现AES+Base64加密,需要在Postman中的Pre-request Script中写脚本。Pre-request Script是指在发送报文前执行的脚本,用于对请求包中的各种参数做一些个性化的处理。

var aesKey = "***";
if('POST' == request.method && 'product' == pm.environment.get("env")) {const echoPostRequest = {url: request.urlmethod: 'POST',header:'Content-Type:application/json',body: encrypt(request.data, aesKey)};pm.sendRequest(echoPostRequest, function (err, res) {console.log("request body -> " + echoPostRequest.body);console.log("response body -> " + res.text());var result = decrypt(res.text(), aesKey);console.log("response body decrypted -> " + result);});
}// AES 加密方法
// word是加密内容,keyStr是秘钥
// ECB:加密算法,padding:对齐方式
// ciphertext:16进制加密,不加此方法就是Base64加密
function  encrypt(word, keyStr){var key  = CryptoJS.enc.Utf8.parse(keyStr);var srcs = CryptoJS.enc.Utf8.parse(word);console.log('content:'+word);var encrypted = CryptoJS.AES.encrypt(srcs, key, {mode:CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7});return encrypted.toString();
}//解密
function decrypt(word, keyStr){//console.log('decrypt key:' + keyStr);var key  = CryptoJS.enc.Utf8.parse(keyStr);let base64 = CryptoJS.enc.Base64.parse(word);let src =  CryptoJS.enc.Base64.stringify(base64);var decrypt = CryptoJS.AES.decrypt(src, key, {mode:CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7});return decrypt.toString(CryptoJS.enc.Utf8);
}

上面的脚本,判断是否是现网环境product且是post请求,如果是,就对报文进行AES+Base64加密。在脚本里基于明文的请求包构造了一个加密请求,然后请求后台后打印出相应的返回包,并对返回包做一次解密拿到明文并输出。

除了Pre-request Script中的请求外,Postman还会继续发送明文的请求,所以相当于点击执行后发送了两次请求,这是需要关注的点。目前还没有想到其他合适的方法
 

word ='{"username": "admin", "password": "1a"}'
keyStr='qwer45tghtyuilko'a=encrypt(word, keyStr)
console.log(a)b=decrypt(a,keyStr)
console.log(b)// AES 加密方法
// word是加密内容,keyStr是秘钥
// ECB:加密算法,padding:对齐方式
// ciphertext:16进制加密,不加此方法就是Base64加密
function  encrypt(word, keyStr){var key  = CryptoJS.enc.Utf8.parse(keyStr);var srcs = CryptoJS.enc.Utf8.parse(word);console.log('content:'+word);var encrypted = CryptoJS.AES.encrypt(srcs, key, {mode:CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7});return encrypted.toString();
}//解密
function decrypt(word, keyStr){//console.log('decrypt key:' + keyStr);var key  = CryptoJS.enc.Utf8.parse(keyStr);let base64 = CryptoJS.enc.Base64.parse(word);let src =  CryptoJS.enc.Base64.stringify(base64);var decrypt = CryptoJS.AES.decrypt(src, key, {mode:CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7});return decrypt.toString(CryptoJS.enc.Utf8);
}

待加密的报文称为,

运行日志如下:

 

命令行发送post请求?参考:

Postman通用接口加密解决方案 - 简书

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/1/88469.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息