首页 > 其他分享 >jmeter AES加密/解密

jmeter AES加密/解密

时间:2024-12-10 09:57:00浏览次数:4  
标签:AES 加密 String 解密 Cipher key jmeter

首先了解一下,什么是AES加密/解密?AES(全称:Advanced Encryption Standard)对称加密算法,也就是加密和解密用到的密钥是相同的,这种加密方式加密速度非常快,

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

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

Jmeter 对AES加密/解密,当前可以通过beanshell 的方式处理。以下是通过网上找了一段AES加密/解密的java代码,根据需要稍微改动一点内容,

看一下怎么在jmeter中将明文进行加密和解密。

 完整代码:

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);

运行结果:

 

标签:AES,加密,String,解密,Cipher,key,jmeter
From: https://www.cnblogs.com/JcHome/p/18596715

相关文章

  • 使用 JMeter 进行压力测试
    一.前言#压力测试是每一个Web应用程序上线之前都需要做的一个测试,他可以帮助我们发现系统中的瓶颈问题,减少发布到生产环境后出问题的几率;预估系统的承载能力,使我们能根据其做出一些应对措施。所以压力测试是一个非常重要的步骤,下面我带大家来使用一款压力测试工具JMeter。二.关......
  • TLS1.3抓包分析----解密Application Data
    一、问题描述TLS1.3在两次握手后,开始加入加密传输。具体表现ChangeCipherSpec之后出现ApplicationData(加密后的数据,WireShark不能解密)。二、解决方案tls1.3交互的双方分别是谷歌浏览器和支持tls1.3的服务器。WireShark在抓包过程中的作用是呈现数据交互,它本身不会存储......
  • 第十四章:深度解密 async/await 与 Task 的底层原理
    第十四章:深度解密async/await与Task的底层原理目录第十四章:深度解密async/await与Task的底层原理14.1引言:从回调地狱到async/await1.从回调函数到事件驱动:早期的异步编程模型1.1回调函数(Callback)的局限性1.2基于事件的异步模式(EAP)1.3任务并行库(TPL)和Task的引入2.......
  • 关于JMeter中如何让界面永久显示中文
    1、找到JMeter的安装目录,并打开“bin”文件夹。2、在“bin”文件夹中,找到名为“jmeter.properties”的配置文件,并用文本编辑器打开它。3、在配置文件中搜索“language”这一行,你会看到类似“#language=en”这样的注释行。将其改成“language=zh_CN”,并去掉前面的“#”号。......
  • 关于JMeter中正则表达式提取器的作用域问题
    1、如果正则表达式与请求在同一级正则表达式提取器在在一个线程组里面任意位置都能生效,作用于整个线程组即使正则表达式提取器在请求之前,也能够生效2、如果正则表达式提取器在一个请求的子级中则提取的内容只作用于这个请求之后的请求对于在这个请求之前的其他请求就不生......
  • 密码学实验加密解密
    源代码:【免费】密码学实验加密解密实现资源-CSDN文库#include<iostream>#include<fstream>#include<cstdlib>usingnamespacestd;intmax(intstr[]){   intmax=0,i,n;   for(i=0;i<26;i++)   {      if(max<str[i])      {   ......
  • Java 注解实现字段加密和解密
    前言一般对防止数据泄露有两种方式,第一种是在数据库层面去做加密,还有一种就是在应用层去加密。数据库层面做数据加密的是最安全的,实现需要对驱动做操作,略显复杂,如果对保密程度不是非常高,可以在应用层面去实现数据加解密。下面将基于应用层面结合aop去实现数据加解密功能。1.引入......
  • Springboot请求参数解密
    新建一个 HttpServletRequestWrapper实现类,在Filter中使用该类包装原requestimportcn.hutool.core.collection.CollUtil;importcn.hutool.core.io.IoUtil;importcn.hutool.core.map.MapUtil;importcn.hutool.core.net.URLDecoder;importcn.hutool.core.text.CharSeq......
  • 中国供应商字体解密
    https://www.gys.cn/buy/5420348615.html字体是由坐标画出来的,关键词:rmoveto,rlineto,rrcurveto等""""<CharStringname="uni100d1">12615-1rmoveto00rlineto-27rlineto43152525735rrcurveto00rlinet......
  • “掌握AWD:解密全轮驱动的终极性能“
    AWD攻防战(Attack-DefenseWar)是一种常见的渗透测试形式,也称为红蓝对抗,是为了模拟真实的网络安全攻防情况而进行的比赛或训练。AWD攻防战通常会分为两个团队:红队和蓝队。红队是攻击方,负责发起各种攻击以获取敌方系统的控制权或敏感信息。蓝队是防守方,负责保护自己的系统,发现并......