一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

CentOS中Postman数据加密如何实现

时间:2026-07-24 07:17:48 编辑:袖梨 来源:一聚教程网

CentOS中Postman数据加密的实现方法

在CentOS系统中使用Postman时,数据加密主要围绕传输加密、存储加密、请求/响应数据加密三个核心场景展开,以下是具体操作步骤:

一、基础安全配置(传输层加密与敏感信息保护)

在进行数据加密前,需先完成Postman的基础安全设置,确保传输通道安全及敏感信息不泄露:

  • 使用HTTPS协议:确保所有API请求通过https://开头,启用SSL/TLS加密传输,防止数据在传输过程中被窃取或篡改。
  • 禁用敏感信息保存:进入Postman设置(SettingsGeneral),勾选“Do not save sensitive information”(不保存敏感信息),避免API密钥、密码等敏感数据持久化存储。
  • 配置环境变量:将敏感信息(如API密钥、数据库密码)存储在环境变量中(EnvironmentAdd),在请求中使用{{variable_name}}引用,避免硬编码。
  • 设置代 理(可选):若网络环境需要,可通过SettingsProxy配置代 理服务器,进一步保护网络通信安全。

二、存储数据加密(加密Postman中的敏感数据)

Postman支持对存储在本地的敏感数据进行加密,增加一层本地保护:

  • 内置加密功能:Postman提供数据加密选项,可通过SettingsSecurity开启“Encrypt local data”(加密本地数据),输入主密码后,所有本地存储的集合、环境变量等数据将被加密。
  • 注意事项:加密后需妥善保管主密码,忘记密码将无法恢复加密数据。

三、请求数据加密(动态加密请求参数/报文)

针对需要加密的API请求,可通过Pre-request Script(预请求脚本)动态加密请求数据,常见算法包括AES、RSA、MD5等:

1. AES对称加密(适用于高效加密场景)

AES是一种对称加密算法,加密与解密使用相同密钥。以下是在Pre-request Script中实现AES+Base64加密的示例:

// 定义AES密钥(需与后端一致)var aesKey = "your-aes-key-123"; // 16/24/32位长度// 判断是否为目标环境(如product环境)及POST请求if ('POST' === request.method && 'product' === pm.environment.get("env")) {// 加密函数(使用CryptoJS库)function encrypt(word, keyStr) {var key = CryptoJS.enc.Utf8.parse(keyStr);var srcs = CryptoJS.enc.Utf8.parse(word);var encrypted = CryptoJS.AES.encrypt(srcs, key, { mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 });return encrypted.toString(); // 返回Base64加密字符串}// 获取请求体数据(需为JSON字符串)var requestData = pm.request.body.raw;// 执行加密var encryptedData = encrypt(requestData, aesKey);// 将加密后的数据设置为请求体pm.request.body.raw = encryptedData;}

说明:上述脚本会在发送POST请求前,将请求体数据用AES加密(ECB模式+PKCS7填充),替换原请求体。

2. RSA非对称加密(适用于高安全需求场景)

RSA是一种非对称加密算法,使用公钥加密、私钥解密。适用于敏感数据(如密码、支付信息)的加密:

// 引入CryptoJS库(Postman内置)const CryptoJS = require('crypto-js');// 公钥(需从后端获取)const publicKey = `-----BEGIN PUBLIC KEY-----MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAu1SU1LfVLPHCozMxH2Mo4lgOEePzNm0tRgeLezV6ffAt0gunVTLw7onLRnrq0/IzW7yWR7QkrmBL7jTKEn5u+qKhbwKfBstIs+bMY2Zkp18gnTxKLxoS2tFczGkPLPgizskuemMghRniWaoLcyehkd3qqGElvW/VDL5AaWTg0nLVkjRo9z+40RQzuVaE8AkAFmxZzow3x+VJXdi5+gcJwIDAQAB-----END PUBLIC KEY-----`;// 加密函数(使用RSA公钥)function encryptRSA(data) {const encrypted = CryptoJS.RSA.encrypt(data, publicKey, {mode: CryptoJS.mode.ECB,padding: CryptoJS.pad.Pkcs1});return encrypted.toString();}// 示例:加密请求参数const requestData = { username: 'admin', password: '123456' };const encryptedData = encryptRSA(JSON.stringify(requestData));pm.request.body.raw = JSON.stringify({ data: encryptedData });

说明:上述脚本将请求参数转换为JSON字符串后,用RSA公钥加密,适用于需要高安全性的场景。

3. MD5签名(适用于接口鉴权)

MD5是一种哈希算法,用于生成数据摘要(不可逆),常用于接口签名鉴权,防止数据篡改:

// 获取请求参数(包括URL query、body)const params = pm.request.url.query.all();const body = pm.request.body.raw ? JSON.parse(pm.request.body.raw) : {};// 组合所有参数(按key升序排序)let sortedParams = {};Object.keys(params).sort().forEach(key => {sortedParams[key] = params[key].value;});Object.keys(body).sort().forEach(key => {sortedParams[key] = body[key];});// 添加appid和appsecret(需与后端一致)sortedParams.appid = 'your-appid';sortedParams.appsecret = 'your-appsecret';// 生成签名字符串(key=value&key=value格式)let signString = Object.keys(sortedParams).map(key => `${key}=${sortedParams[key]}`).join('&');// 计算MD5并转为大写const sign = CryptoJS.MD5(signString).toString().toUpperCase();// 将签名添加到请求头pm.request.headers.add({ key: 'sign', value: sign });

说明:上述脚本生成请求参数的MD5签名,添加到请求头中,用于后端验证请求合法性。

四、响应数据解密(处理加密的返回结果)

若接口返回加密数据(如AES加密的JSON字符串),可通过Tests脚本解密并提取有效信息:

// 引入CryptoJS库const CryptoJS = require('crypto-js');// 获取响应数据const response = pm.response.json();const encryptedData = response.data; // 假设返回的加密字段为data// 定义AES密钥(需与加密密钥一致)const aesKey = "your-aes-key-123";// 解密函数function decryptAES(encryptedText, keyStr) {const key = CryptoJS.enc.Utf8.parse(keyStr);const decryptedBytes = CryptoJS.AES.decrypt(encryptedText, key, {mode: CryptoJS.mode.ECB,padding: CryptoJS.pad.Pkcs7});return decryptedBytes.toString(CryptoJS.enc.Utf8);}// 执行解密try {const decryptedData = decryptAES(encryptedData, aesKey);console.log('Decrypted Data:', decryptedData);// 将解密后的数据保存到环境变量(可选)pm.environment.set('decrypted_data', decryptedData);} catch (error) {console.error('Decryption Error:', error.message);}

说明:上述脚本解密接口返回的加密数据,并将结果保存到环境变量中,方便后续测试使用。

注意事项

  • 密钥管理:AES密钥、RSA私钥等敏感信息需妥善保管,避免泄露(可通过环境变量或密钥管理服务存储)。
  • 算法选择:对称加密(如AES)适用于高效加密场景,非对称加密(如RSA)适用于高安全需求场景,MD5适用于签名鉴权。
  • 兼容性:确保后端与Postman的加密算法、密钥一致,避免加密/解密失败。

通过以上方法,可在CentOS系统中使用Postman实现数据加密,提升API测试的安全性。

热门栏目