当前位置: 首页 > news >正文

jmeter-AES加密

AES(全称:Advanced Encryption Standard)对称加密算法,也就是加密和解密用到的密钥是相同的,这种加密方式加密速度非常快,

适合经常发送数据的场合,如:数据加密存储、网络通信加密等。

在进行接口测试或接口压测时,有些比较核心的接口有可能会用AES方式对接口的入参或响应内容进行加密/解密。

Jmeter 对AES加密/解密,当前可以通过beanshell 的方式处理。

代码如下:

import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
import java.security.SecureRandom;
import java.util.Base64;
 
public class AESUtil {
 
    // AES密钥算法
    private static final String KEY_ALGORITHM = "AES";
 
    // 加密/解密算法/工作模式/填充方式
    private static final String CIPHER_ALGORITHM = "AES/ECB/PKCS5Padding";
 
    // 生成密钥
    public static String generateAESKey() throws Exception {
        KeyGenerator keyGenerator = KeyGenerator.getInstance(KEY_ALGORITHM);
        keyGenerator.init(128, new SecureRandom()); // 192 and 256 bits may not be available
        SecretKey secretKey = keyGenerator.generateKey();
        return Base64.getEncoder().encodeToString(secretKey.getEncoded());
    }
 
    // AES加密
    public static String encryptAES(String data, String key) throws Exception {
        Cipher cipher = Cipher.getInstance(CIPHER_ALGORITHM);
        SecretKeySpec secretKeySpec = new SecretKeySpec(Base64.getDecoder().decode(key), KEY_ALGORITHM);
        cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec);
        byte[] encrypted = cipher.doFinal(data.getBytes());
        return Base64.getEncoder().encodeToString(encrypted);
    }

    // 解密
    public static String decryptAES(String data, String key) throws Exception {
        Cipher cipher = Cipher.getInstance(CIPHER_ALGORITHM);
        SecretKeySpec secretKeySpec = new SecretKeySpec(Base64.getDecoder().decode(key), KEY_ALGORITHM);
        cipher.init(Cipher.DECRYPT_MODE, secretKeySpec);
        byte[] decrypted = cipher.doFinal(Base64.getDecoder().decode(data));
        return new String(decrypted);
    }
 
    public static void main(String[] args) throws Exception {
        String key = generateAESKey();
        String originalText = "Hello World!";
        String encryptedText = encryptAES(originalText, key);
        System.out.println("Encrypted Text: " + encryptedText);
        // 解密操作
        // String decryptedText = decryptAES(encryptedText, key);
        // System.out.println("Decrypted Text: " + decryptedText);
    }
}

AESUtil aes_obj = new AESUtil();
String key = aes_obj.generateAESKey();
String originalText = "Hello World!";
String value = aes_obj.encryptAES(originalText,key);
log.info("密钥key: "+key);
log.info("AES加密结果:"+value);
//解密
String decryptedText = aes_obj.decryptAES(value, key);
log.info("AES解密结果:"+decryptedText);
// 将加密结果设置为jmeter参数
vars.put("AES_value",value);

相关文章:

  • 【Python】PyQt5在PyCharm的配置与应用
  • E1-110.完美走位(滑动窗口)
  • C#带有设备仿真功能串口调试助手
  • 【AIGC】计算机视觉-YOLO系列家族
  • 今天你学C++了吗?——C++中的继承
  • 聚水潭数据集成到MySQL的高效方法
  • Git使用(一)--如何在 Windows 上安装 Git:详细步骤指南
  • JVM学习-类文件结构 类加载
  • 2025年渗透测试面试题总结-奇安信安全工程师(题目+回答)
  • 蓝桥杯备考:unordered_map用法之阅读理解
  • IIS EXPRESS 虚拟目录经验谈!
  • mysql 数据库部署
  • 故障诊断——neo4j入门
  • OpenManus 开源项目介绍
  • Flutter——Android与Flutter混合开发详细教程
  • Linux 入门:常用命令速查手册
  • c# txt文档的实时显示,用来查看发送接收指令
  • Linux练级宝典->基础IO
  • ​【C++设计模式】第二十二篇:访问者模式(Visitor)
  • HTML块级元素和内联元素(简单易懂)
  • 小程序免费制作平台360/广州各区正在进一步优化以下措施
  • 杭州建设厅官网/网页优化包括
  • 自适应网站如何做mip网页/品牌推广策略
  • 网站开发的意义和目的/互联网行业最新资讯
  • 襄阳做网站 优帮云/沈阳seo搜索引擎
  • 汉子由来 外国人做的网站/seo是什么车