遇一山,过一山,处处有风景;只要勇敢向前,一路尽是繁花盛开。 | (点击查看→)【测试干货】python/java自动化、持续集成、性能、测开、简历、笔试面试等

【群答疑】jmeter实现aes解密

需求

调用aesDecrypt方法解密

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

期望结果:

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

  

方案:beanshell引入java文件

SHATest.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
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脚本

1
2
3
4
5
6
7
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】

 

posted @   全栈测试笔记  阅读(543)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
浏览器标题切换
浏览器标题切换end
点击右上角即可分享
微信分享提示