Postman(Pre-request Script)AES接口加密(JS)

一、AES加密CBC

json串使用AES(AES/CBC/PKCS5Padding)加密,在postman的Pre_request Script 中添加脚本

// AES 加密方法
// content是加密内容,keyStr是秘钥
// ECB:加密算法,padding:对齐方式
// ciphertext:16进制加密,不加此方法就是Base64加密
function encrypt(content, keyStr) {
    var key = CryptoJS.enc.Utf8.parse(keyStr);
    var iv = CryptoJS.enc.Utf8.parse(keyStr);
    var srcs = CryptoJS.enc.Utf8.parse(content);
    var encrypted = CryptoJS.AES.encrypt(srcs, key, {iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 });
    return encrypted.toString();
}

encryptedText = encrypt(signText, vkey);
console.log('=====ApiKeys:' + encryptedText);



var Crypto = require('cryptojs/cryptojs.js').Crypto;

function Encrypt(word) {
  var mode = new Crypto.mode.CBC(Crypto.pad.pkcs7);
  var eb = Crypto.charenc.UTF8.stringToBytes(word);
  var kb = Crypto.charenc.UTF8.stringToBytes("1234567812345678");//KEY
  var vb = Crypto.charenc.UTF8.stringToBytes("8765432187654321");//IV
  var ub = Crypto.AES.encrypt(eb, kb, { iv: vb, mode: mode, asBpytes: true });
  return ub;
}

二、AES加密ECB

// AES 加密方法
// content是加密内容,keyStr是秘钥
// ECB:加密算法,padding:对齐方式
// ciphertext:16进制加密,不加此方法就是Base64加密
function encrypt(content, keyStr) {
    var key = CryptoJS.enc.Utf8.parse(keyStr);
    var srcs = CryptoJS.enc.Utf8.parse(content);
    var encrypted = CryptoJS.AES.encrypt(srcs, key, {mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 });
    return encrypted.toString();
}

encryptedText = encrypt(signText, vkey);
console.log('=====ApiKeys:' + encryptedText);

区别在于CBC模式时,需要添加iv

三、参考

1、https://www.cnblogs.com/yungiu/p/11497946.html

2、https://zhuanlan.zhihu.com/p/162910462

3、https://www.cnblogs.com/lasdaybg/p/9971285.html

4、https://www.jianshu.com/p/cae50f9b61ab

5、Python AES加密 与 JS AES加密:https://blog.csdn.net/qq523176585/article/details/94010652

6、https://zhuanlan.zhihu.com/p/33480431

posted @ 2021-11-15 14:10  xyztank  阅读(2574)  评论(0)    收藏  举报