首页 > 其他分享 >【群答疑】jmeter实现aes解密

【群答疑】jmeter实现aes解密

时间:2023-10-31 12:11:06浏览次数:36  
标签:aes java String 答疑 result import byte jmeter hexStr

需求

调用aesDecrypt方法解密

String keyword = "eb9dc4aa69d6582693ba2e3ebe2fe260";
String data = "C4564EEBA5C956464B1A050F4961A7C5A41D33414BA8175B668ACF8BFAB228D484BD2FB175C854F5DDBF13470D61AD073E6432C45B81303578BF004917B8DEE4";

期望结果:

{"transType": "V2101","transDate": "2010-12-24 12:25:15"}

  

方案:beanshell引入java文件

SHATest.java

package com.test;

import java.security.SecureRandom;
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;


public class SHATest {
    private static int digit = 128;
    private static String  keyword = "eb9dc4aa69d6582693ba2e3ebe2fe260"; 

    // aes解密
    public static String aesDecrypt(String content, String password) throws Exception {
        byte[] contentByte = parseHexStr2Byte(content);
        KeyGenerator kgen = KeyGenerator.getInstance("AES");
        SecureRandom random = SecureRandom.getInstance("SHA1PRNG");
        random.setSeed(password.getBytes("UTF-8"));
        kgen.init(digit, random);

        SecretKey secretKey = kgen.generateKey();
        byte[] enCodeFormat = secretKey.getEncoded();

        SecretKeySpec key = new SecretKeySpec(enCodeFormat, "AES");
        Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
        cipher.init(Cipher.DECRYPT_MODE, key); 
        byte[] result = cipher.doFinal(contentByte);
        String returStr = new String(result,"UTF-8");
        return returStr;

    }

    /**
     * 将16进制转换为二进制
     */
    public static byte[] parseHexStr2Byte(String hexStr) {
        if (hexStr.length() < 1)
            return null;
        byte[] result = new byte[hexStr.length() / 2];
        for (int i = 0; i < hexStr.length() / 2; i++) {
            int high = Integer.parseInt(hexStr.substring(i * 2, i * 2 + 1), 16);
            int low = Integer.parseInt(hexStr.substring(i * 2 + 1, i * 2 + 2), 16);
            result[i] = (byte) (high * 16 + low);
        }
        return result;
    }
}

  

beanshell脚本

source("E:\\myjava\\demo\\src\\main\\java\\com\\test\\SHATest.java");

String keyword = "eb9dc4aa69d6582693ba2e3ebe2fe260";
String data = "C4564EEBA5C956464B1A050F4961A7C5A41D33414BA8175B668ACF8BFAB228D484BD2FB175C854F5DDBF13470D61AD073E6432C45B81303578BF004917B8DEE4";

String res = SHA256.aesDecrypt(data,keyword);
log.info("========="+res);

 

结果:解密成功

 

【bak】

 

标签:aes,java,String,答疑,result,import,byte,jmeter,hexStr
From: https://www.cnblogs.com/uncleyong/p/17799621.html

相关文章

  • 20.3 OpenSSL 对称AES加解密算法
    AES算法是一种对称加密算法,全称为高级加密标准(AdvancedEncryptionStandard)。它是一种分组密码,以128比特为一个分组进行加密,其密钥长度可以是128比特、192比特或256比特,因此可以提供不同等级的安全性。该算法采用了替代、置换和混淆等技术,以及多轮加密和密钥扩展等机制,使得其加密......
  • 20.3 OpenSSL 对称AES加解密算法
    AES算法是一种对称加密算法,全称为高级加密标准(AdvancedEncryptionStandard)。它是一种分组密码,以128比特为一个分组进行加密,其密钥长度可以是128比特、192比特或256比特,因此可以提供不同等级的安全性。该算法采用了替代、置换和混淆等技术,以及多轮加密和密钥扩展等机制,使得其加密......
  • 一文2000字从0到1用Jmeter全流程性能测试实战
    项目背景:我们的平台为全国某行业监控平台,经过3轮功能测试、接口测试后,98%的问题已经关闭,决定对省平台向全国平台上传数据的接口进行性能测试。01、测试步骤1、编写性能测试方案由于我是刚进入此项目组不久,只参与了其中3个模块的功能测试,一遍接口回归测试,所以在写性能测试方案......
  • AES加密
    关于AESAES属于分组加密算法,明文长度固定为128位,密钥长度可以为128、192、256位。本文以明文长度128位,密钥长度128位的AES进行实现。AES加密解密python实现#S-Box的预定义值,用于替代输入字节。256s_box=(0x63,0x7c,0x77,0x7b,0xf2,0x6b,0x6f,0xc5,0x30,......
  • jmeter常见问题
    解决jmeter非GUI模式运行测试时,结果.jtl文件没有响应数据及中文乱码问题(1)修改bin目录下的user.properties文件,追加配置:jmeter.save.saveservice.response_data=truejmeter.save.saveservice.samplerData=truejmeter.save.saveservice.requestHeaders=truejmeter.save.......
  • Jmeter之json提取器
    Jmeter之json提取器一、json提取器设置多个变量获取多个数据1、json的Path表达式:$.data.result[*].data.tradeTitle $表示根元素,然后一级级属性往下去找,先找到data,再往下子节点找到result,[*]表示该节点下有多个子节点。然后找到data,再找到tradeTitle2、添加:后置处理器——j......
  • JMeter-如果(if)控制器
    目录 前言 需求 一:添加商品信息接口 二、打开函数助手,选择__jexl3函数 三、添加逻辑控制器-如果(if)控制器 四、在如果(if)控制器下添加登录http请求 五、添加监听器-察看结果树 前言在实际工作中,当使用JMeter做性能脚本或者接口脚本时,当遇到需要对不同的条......
  • 新手入门答疑
    Luogu所有代码提交状态AC:Accept,程序通过。WA:WrongAnswer,答案错误。CE:CompileError,编译错误。PC:PartiallyCorrect,部分正确。RE:RuntimeError,运行时错误。TLE:TimeLimitExceeded,超出时间限制。需要优化空间复杂度或者常数。MLE:MemoryLimitExceeded,超出内存限制。需要优......
  • Lattice .bek档案AES加密解密
    //BEK.h#ifndef__BEK_H__#define__BEK_H__#include<stdio.h>#include<stdlib.h>#include<stdbool.h>/////////////////////////////////////////////////////////////////////////////CRCTables////////////////////////////////////////////......
  • Jmeter中的ramp-up时间指的是什么?请举说明
     在JMeter中,ramp-up时间指的是测试中逐渐增加并发用户数的时间。它表示从测试开始到达最大并发用户数所需的时间。举例说明:假设我们需要对一个网站进行性能测试,设置最大并发用户数为100,并且希望在30秒内逐渐增加并发用户数。那么,ramp-up时间就是30秒。在测试开始时,JMeter会......