Postman scripts实现AES/CBC/Pkcs5加密随机UUID 修改请求

背景

有一个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
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容