CentOS中Postman加密实现方法
在CentOS系统中,Postman的加密功能主要通过Pre-request Script(预请求脚本)实现,借助CryptoJS、Forge.js等库对请求参数进行加密(如AES、RSA),并结合环境变量管理密钥,确保敏感信息安全。以下是具体实现步骤:
若尚未安装Postman,可通过以下命令下载并部署Linux版(适用于CentOS):
wget https://www.postman.com/downloads/linux-x64-latest.tar.gz
tar -xzvf Postman-linux-x64-latest.tar.gz
sudo mv Postman /opt/apps/
sudo ln -s /opt/apps/Postman/Postman /usr/local/bin/postman
安装完成后,通过postman命令启动应用。
AES是对称加密算法,加密与解密使用同一密钥,适合加密敏感参数(如密码、身份证号)。
// 引入CryptoJS库(Postman内置)
const CryptoJS = require('crypto-js');
// 待加密的明文数据(需转换为JSON字符串)
const data = {"username": "admin", "password": "123456"};
// AES密钥(需与后端一致,建议存储在环境变量中)
const secretKey = "your-secret-key-123";
// AES加密函数
function encrypt(word, keyStr) {
const key = CryptoJS.enc.Utf8.parse(keyStr);
const srcs = CryptoJS.enc.Utf8.parse(word);
const encrypted = CryptoJS.AES.encrypt(srcs, key, {
mode: CryptoJS.mode.ECB, // 加密模式
padding: CryptoJS.pad.Pkcs7 // 填充方式
});
return encrypted.toString(); // 返回Base64编码的加密结果
}
// 执行加密
const encryptedData = encrypt(JSON.stringify(data), secretKey);
// 将加密结果存入环境变量(方便后续请求使用)
pm.environment.set("encryptedData", encryptedData);
console.log("加密后的数据:", encryptedData);
(2)在请求的Body中,将加密后的数据({{encryptedData}})填入对应位置(如raw模式的JSON中)。RSA是非对称加密算法,使用公钥加密、私钥解密,适合加密重要信息(如密码、token)。
-----BEGIN PUBLIC KEY-----\nxxx\n-----END PUBLIC KEY-----),并将其存入Postman的环境变量(如RSA_Public_Key)。// 引入Forge.js库(需先通过npm安装,或通过GitHub获取)
if (!pm.globals.has("forgeJS")) {
pm.sendRequest("https://raw.githubusercontent.com/loveiset/RSAForPostman/master/forge.js", function(err, res) {
if (!err) {
pm.globals.set("forgeJS", res.text()); // 保存forge.js代码到全局变量
}
});
}
eval(pm.globals.get("forgeJS")); // 执行forge.js代码
// 获取公钥(从环境变量)
const publicKeyPem = pm.environment.get("RSA_Public_Key");
// 将PEM格式公钥转换为Forge对象
const publicKey = forge.pki.publicKeyFromPem(publicKeyPem);
// 待加密的明文数据(需拼接时间戳防止重放攻击)
const timestamp = Math.round(new Date().getTime() / 1000); // 当前时间戳
const data = {"token": "abc123", "userId": "1001"};
const tempStr = JSON.stringify(data) + timestamp;
// RSA加密(使用PKCS1-V1_5填充、SHA1哈希)
const encrypted = publicKey.encrypt(tempStr, 'RSAES-PKCS1-V1_5', {
md: forge.md.sha1.create(),
mgf: forge.mgf.mgf1.create(forge.md.sha1.create())
});
// 将加密结果转换为Base64字符串
const encryptedData = forge.util.encode64(encrypted);
// 将加密结果存入请求体
pm.request.body.update({
mode: 'raw',
raw: JSON.stringify({"data": encryptedData, "timestamp": timestamp})
});
console.log("RSA加密后的数据:", encryptedData);
(3)发送请求时,Postman会自动执行脚本,将加密后的数据填入请求体。Postman → 环境 → 编辑环境 → 添加变量(如RSA_Public_Key、AES_Secret_Key)。chmod 700 ~/.config/Postman),防止未授权用户查看配置。通过以上方法,可在CentOS系统中使用Postman实现接口参数的加密,保障数据传输安全。