美文网首页
Postman scripts实现AES/CBC/Pkcs5加密

Postman scripts实现AES/CBC/Pkcs5加密

作者: h080294 | 来源:发表于2024-12-10 14:13 被阅读0次

背景

有一个post请求,需要在header和body中动态计算uuid加密。

参考下网上资料,可以用 Scripts 功能实现。

功能点拆分

  • 动态生成 uuid

  • 对{uuid + 盐}进行 AES/CBC/pkcs5 加密

  • 更新 header 中 signature 字段

  • 更新请求 body 中的 uuid 相关字段

脚本实现

动态生成 uuid

const uuidV4 = require('uuid');
let uuid = uuidV4.v4();

AES/CBC/pkcs5 加密

const keyStr = 'yourKey';
const keyiv = 'yourIV';

// AES加密
function encrypt(content) {
    var key = CryptoJS.enc.Utf8.parse(keyStr);
    var iv = CryptoJS.enc.Utf8.parse(keyiv);
    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();
}

let content = 'something';
encryptedText = encrypt(content);
console.log('=====ApiKeys:' + encryptedText);

更新 header 中 signature 字段

// 更新 header 参数
pm.request.headers.upsert({
    key: 'signature',
    value: encryptedText
})

更新请求 body 中的 uuid 相关字段

// 更新body
function updataIds() {
    let body = JSON.parse(pm.request.body.raw);
    // 更新 body 中的 uuid 值
    body.id = uuid;
    pm.request.body.raw=JSON.stringify(body);
}

updataIds();

完整脚本

// Script for AES/CBC/Pkcs5 encrypt uuid parm

const uuidV4 = require('uuid');
const keyStr = 'yourKey';
const keyiv = 'yourKeyIV';

// 生成-UUID
function getUUID() {
    return uuidV4.v4();
}

// 时间戳-毫秒
function getCurrnetTime() {
    return new Date().getTime();
}

// AES加密
function encrypt(content) {
    var key = CryptoJS.enc.Utf8.parse(keyStr);
    var iv = CryptoJS.enc.Utf8.parse(keyiv);
    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();
}

let uuid = getUUID();
console.log('======uuid: ' + uuid );

// 组装加密参数
function getSingleText() {
    let timestamp = getCurrnetTime();
    return keyiv + '|' + uuid + '|' + timestamp.toString();
}

// 更新body
function updataIds() {
    let body = JSON.parse(pm.request.body.raw);
    body.id = uuid;
    pm.request.body.raw=JSON.stringify(body);
}

let signText = getSingleText();
console.log('======signText: ' + signText);

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

// 更新 header 参数
pm.request.headers.upsert({
    key: 'signature',
    value: encryptedText
})

// 更新 body 参数
updataIds();

实践

点击 Pre-req -> Scripts Tab -> 输入 javaScripts 脚本


打开 console -> 发送请求 -> 观察请求 log 及结果


console

相关文章

网友评论

      本文标题:Postman scripts实现AES/CBC/Pkcs5加密

      本文链接:https://www.haomeiwen.com/subject/iprasjtx.html