找回密码
 立即注册
查看: 509|回复: 0

[其它] Postman 请求自动 SM2/SM4 加解密

[复制链接]

224

主题

0

回帖

773

积分

高级会员

积分
773
发表于 2024-7-2 12:48:22 | 显示全部楼层 |阅读模式
本帖最后由 御坂主机 于 2024-7-3 18:28 编辑

1. 简介

在信息安全领域,SM2和SM4是两种重要的国密算法。SM2主要用于公钥加密和数字签名,SM4则是一种对称加密算法。在API测试中,使用Postman对请求进行SM2/SM4加解密操作可以有效保障数据传输的安全性。本文将详细介绍如何在Postman中实现请求的自动SM2/SM4加解密。

1.1 准备工作

首先,需要确保Postman已经安装在您的计算机上,并且了解基本的API测试操作。为了实现SM2/SM4加解密,还需要安装一些必要的Node.js库,如gm(国密算法库)和CryptoJS。

1.1.1 安装Node.js和npm

确保您的计算机上已经安装了Node.js和npm。可以通过以下命令检查:

  1. node -v
  2. npm -v
复制代码


如果未安装,可以从Node.js官方网站下载并安装。

1.1.2 安装必要库

打开终端或命令提示符,安装gm和CryptoJS库:

  1. npm install gm
  2. npm install crypto-js
复制代码


2. 配置Postman

在Postman中,可以通过Pre-request Script和Tests两个部分实现请求的自动加解密。Pre-request Script用于在请求发送前执行特定脚本,Tests用于在请求完成后执行特定脚本。

2.1 SM2加密

在Pre-request Script中添加以下代码,以对请求数据进行SM2加密:

  1. const gm = require('gm');
  2. const publicKey = '您的SM2公钥';

  3. const encrypt = (data, publicKey) => {
  4.     const sm2 = new gm.SM2();
  5.     return sm2.encrypt(data, publicKey, 'base64');
  6. };

  7. const requestData = {
  8.     key1: 'value1',
  9.     key2: 'value2'
  10. };

  11. const encryptedData = encrypt(JSON.stringify(requestData), publicKey);
  12. pm.environment.set('encryptedData', encryptedData);
复制代码


2.2 SM2解密

在Tests中添加以下代码,以对响应数据进行SM2解密:

  1. const gm = require('gm');
  2. const privateKey = '您的SM2私钥';

  3. const decrypt = (data, privateKey) => {
  4.     const sm2 = new gm.SM2();
  5.     return sm2.decrypt(data, privateKey, 'base64');
  6. };

  7. const encryptedResponse = pm.response.text();
  8. const decryptedResponse = decrypt(encryptedResponse, privateKey);
  9. console.log('Decrypted Response:', decryptedResponse);
复制代码


2.3 SM4加密

在Pre-request Script中添加以下代码,以对请求数据进行SM4加密:

  1. const CryptoJS = require('crypto-js');
  2. const key = CryptoJS.enc.Hex.parse('您的SM4密钥');

  3. const encrypt = (data, key) => {
  4.     const encrypted = CryptoJS.SM4.encrypt(data, key, {
  5.         mode: CryptoJS.mode.ECB,
  6.         padding: CryptoJS.pad.Pkcs7
  7.     });
  8.     return encrypted.toString();
  9. };

  10. const requestData = {
  11.     key1: 'value1',
  12.     key2: 'value2'
  13. };

  14. const encryptedData = encrypt(JSON.stringify(requestData), key);
  15. pm.environment.set('encryptedData', encryptedData);
复制代码


2.4 SM4解密

在Tests中添加以下代码,以对响应数据进行SM4解密:

  1. const CryptoJS = require('crypto-js');
  2. const key = CryptoJS.enc.Hex.parse('您的SM4密钥');

  3. const decrypt = (data, key) => {
  4.     const decrypted = CryptoJS.SM4.decrypt(data, key, {
  5.         mode: CryptoJS.mode.ECB,
  6.         padding: CryptoJS.pad.Pkcs7
  7.     });
  8.     return decrypted.toString(CryptoJS.enc.Utf8);
  9. };

  10. const encryptedResponse = pm.response.text();
  11. const decryptedResponse = decrypt(encryptedResponse, key);
  12. console.log('Decrypted Response:', decryptedResponse);
复制代码


3. 测试与验证

完成以上配置后,可以发送请求进行测试。请求发送前,Pre-request Script会自动对数据进行SM2/SM4加密;请求完成后,Tests会自动对响应数据进行解密。在Postman控制台中可以查看解密后的响应数据,确保数据传输的安全性和完整性。

4. 总结

通过在Postman中配置Pre-request Script和Tests脚本,可以实现请求数据的自动SM2/SM4加解密操作。这不仅提高了数据传输的安全性,还简化了API测试流程。希望本文对您在API测试中的数据加解密操作有所帮助。如果有任何疑问或建议,欢迎交流讨论。






------------------------------------------------------------------------------------------------------------------------------------------

========  御 坂 主 机  ========

>> VPS主机 服务器 前沿资讯 行业发布 技术杂谈 <<

>> 推广/合作/找我玩  TG号 : @Misaka_Offical <<

-------------------------------------------------------------------------------------------------------------------------------------------

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

联系站长|Archiver|手机版|小黑屋|主机论坛

GMT+8, 2025-4-4 13:55 , Processed in 0.068015 second(s), 24 queries .

Powered by 主机论坛 HostSsss.Com

HostSsss.Com

快速回复 返回顶部 返回列表