jmeter调用自定义jar包全过程


一、编写java代码导出为jar包

我这里使用的是eclipse,File>New>Java project。

project name:随便起,然后新建包名》新建文件为Class

 

  

 

编写源码,并运行程序,再导出为jar包

package com.beijing;
import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
 
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
 
/**AES 是一种可逆加密算法,对用户的敏感信息加密处理
* 对原始数据进行AES加密后,在进行Base64编码转化;
*/
public class ClientAES {
/*
* 加密用的Key 可以用26个字母和数字组成
* 此处使用AES-128-CBC加密模式,key需要为16位。
*/
    private static String sKey="1234567890123456";
    private static String ivParameter="abcdef1234567890";
    private static ClientAES instance=null;
    private ClientAES(){
 
    }
    public static ClientAES getInstance(){
        if (instance==null)
            instance= new ClientAES();
        return instance;
    }
    // 加密
    public String encrypt(String sSrc, String encodingFormat, String sKey, String ivParameter) throws Exception {
        Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
        byte[] raw = sKey.getBytes();
        SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
        IvParameterSpec iv = new IvParameterSpec(ivParameter.getBytes());//使用CBC模式,需要一个向量iv,可增加加密算法的强度
        cipher.init(Cipher.ENCRYPT_MODE, skeySpec, iv);
        byte[] encrypted = cipher.doFinal(sSrc.getBytes(encodingFormat));
        return new BASE64Encoder().encode(encrypted);//此处使用BASE64做转码。
}
 
    // 解密
    public String decrypt(String sSrc, String encodingFormat, String sKey, String ivParameter) throws Exception {
        try {
            byte[] raw = sKey.getBytes("ASCII");
            SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
            Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
            IvParameterSpec iv = new IvParameterSpec(ivParameter.getBytes());
            cipher.init(Cipher.DECRYPT_MODE, skeySpec, iv);
            byte[] encrypted1 = new BASE64Decoder().decodeBuffer(sSrc);//先用base64解密
            byte[] original = cipher.doFinal(encrypted1);
            String originalString = new String(original,encodingFormat);
            return originalString;
        } catch (Exception ex) {
            return null;
        }
}
 
    public static void main(String[] args) throws Exception {
        // 需要加密的字串
        String cSrc = "我来自中国";
        System.out.println(cSrc);
        // 加密
        long lStart = System.currentTimeMillis();
        String enString = ClientAES.getInstance().encrypt(cSrc,"utf-8",sKey,ivParameter);
        System.out.println("加密后的字串是:"+ enString);
 
        long lUseTime = System.currentTimeMillis() - lStart;
        System.out.println("加密耗时:" + lUseTime + "毫秒");
        // 解密
        lStart = System.currentTimeMillis();
        String loginbody="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";
        String DeString = ClientAES.getInstance().decrypt(loginbody,"utf-8",sKey,ivParameter);
        System.out.println("解密后的字串是:" + DeString);
        lUseTime = System.currentTimeMillis() - lStart;
        System.out.println("解密耗时:" + lUseTime + "毫秒");
    }
}

 

二、导入到Jmeter里并调用 

把导出的jar包放到\apache-jmeter-4.0\lib\ext下面,启动jmeter

添加BeanShell Sampler 

import com.beijing.*;
System.out.println("解密后的字串是:" );
String loginbody="GubKlVRo+2L1RhsiqQqXfh/q0sdzvaimpd3TCUnn7aM0P";
String DeString = ClientAES.getInstance().decrypt(loginbody,"utf-8","1234567890123456","abcdef1234567890");
System.out.println("解密后的字串是:" + DeString);

 

执行后台可以看到打印的结果为。

 

 

 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM