一、编写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);
执行后台可以看到打印的结果为。