1. 程式人生 > >Jmeter(二十四)Jmeter-Question之“加密請求參數”

Jmeter(二十四)Jmeter-Question之“加密請求參數”

直接 接口 成功 void return beanshell 32位 clas 圖片

  日常接口測試碰到參數加密的情況不在少數,當然與之相對的也有解密。直接記錄實例:

  排除各家用的不一樣的加密方式,用的最多的還是MD5加密(16,32)。Jmeter3.2版本已經有解決方案

  1、${__MD5(,)}函數(默認32位),當然也有其他類型的加密函數:base64

  技術分享圖片

  用法很簡單,與一般函數使用一般無二。

  粘貼一個實例:

  技術分享圖片

  技術分享圖片

  技術分享圖片

  加密之後的結果一致。

  2、第一種方法只是Jmeter自帶功能以滿足需求,當然,也有滿足不了的時候,因此第二種方法就顯得相對靈活一些,還是MD5(32)加密。

    解決思路:使用Beanshell Sampler進行實例化外部jar包

;

    先貼段MD5加密代碼:

 1 package hehe.md5;
 2 
 3 import java.security.MessageDigest;
 4 import java.security.NoSuchAlgorithmException;
 5 
 6 public class Str2MD5 {
 7     //32    
 8     public String MD5(String sourceStr) {
 9         String result = "";
10         try {
11             MessageDigest md = MessageDigest.getInstance("MD5");
12 md.update(sourceStr.getBytes()); 13 byte b[] = md.digest(); 14 int i; 15 StringBuffer buf = new StringBuffer(""); 16 for (int offset = 0; offset < b.length; offset++) { 17 i = b[offset]; 18 if (i < 0)
19 i += 256; 20 if (i < 16) 21 buf.append("0"); 22 buf.append(Integer.toHexString(i)); 23 } 24 result = buf.toString(); 25 System.out.println("MD5(" + sourceStr + ",32) = " + result); 26 // System.out.println("MD5(" + sourceStr + ",16) = " + buf.toString().substring(8, 24)); 27 } catch (NoSuchAlgorithmException e) { 28 System.out.println(e); 29 } 30 return result; 31 } 32 }

  當然,可以在外部寫個類進行測試該段代碼是否能夠加密成功。

1 package hehe.md5;
2 import hehe.md5.Str2MD5;
3 
4 public class test {
5     public static void main(String[] args){
6         String res = new Str2MD5().MD5("dj123456");
7         System.out.println(res);
8     }
9 }

技術分享圖片

測試結果也是與上方一致的。

將該段代碼打成jar包,放入Apache Jmeter\lib\ext\目錄下使用Beanshell Sampler進行外部實例化:

技術分享圖片

技術分享圖片

技術分享圖片

加密之後的結果與上方一致。

Jmeter(二十四)Jmeter-Question之“加密請求參數”