jmeter 實現md5/sha256/sha512加密方式
jmeter 要實現md5、sha-256、sha-512的加密方式,主要有兩種,一種是jmeter自帶的digest函數,另一種就行通過beanshell方式實現。這兩種的區別,主要是自帶的digest函數使用簡單,但由于是經過一層封裝過,常規的加密方式還適用,但復雜一點的加密邏輯不太方便操作。而beanshell 由于是通過代碼方式實現的。因而可以根據實際需要,調整響應的加密邏輯。比如:先加密一次后,再加鹽,再二次加密。但是beanshell的要求也更高因為要了解相關的加密代碼。比如:java、javascript、python 等方式。都可以用于jmeter的beanshell。只不過需要引入相應的jar包。
下面看下jmeter的digest函數支持的加密類型,常用的大體如下:
- MD5
- SHA-224
- SHA-256
- SHA-384
- SHA-512
jmeter幫助文檔上還顯示有其他的加密方式,但其實比較少用到。

在jmeter Function 面板中,找到的digest函數格式及說明,如下:

jmeter 的md5/sha-256/sha-512加密方式一:digest函數
Digest 的MD5的加密效果:

將結果轉換大寫內容:

MD5 加鹽:

(缺點:由于封裝在jmeter內部,不知道這個鹽是怎么實現的,如果要實現復雜一寫的加密方式,可能無法達到預期想要的)
Sha-256加密:

sha-512加密:

(sha-256/sha-512也支持加鹽或結果大小寫轉換,用法與md5一致)
Jmeter md5/sha-256/sha-512加密方式二:beanshell形式
import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; public class DigestExample { public static String encryptExample(String input,String saltValue) { try { // 創建md5加密對象 MessageDigest md = MessageDigest.getInstance("md5"); // 執行加密操作 String input = input+saltValue; byte[] messageDigest = md.digest(input.getBytes()); // 將字節數組轉換為16進制字符串 StringBuilder hexString = new StringBuilder(); for (byte b : messageDigest) { String hex = Integer.toHexString(0xff & b); if (hex.length() == 1) { hexString.append('0'); } hexString.append(hex); } // 返回加密后的字符串 return hexString.toString(); } catch (NoSuchAlgorithmException e) { throw new RuntimeException(e); } } // public static void main(String[] args) { // String input = "password123"; // String encrypted = encryptExample(input); // System.out.println("Original: " + input); // System.out.println("Encrypted: " + encrypted); // } } DigestExample md =new DigestExample(); String value = md.encryptExample("test",""); log.info("MD5加密未加鹽:"+value); String t = "${__time(,)}"; String value_salt = md.encryptExample("test",t); log.info("時間戳:"+t); log.info("MD5加密加鹽:"+value_salt); //將加密結果設置為jmeter的參數,便于后面引用 vars.put("md5_value",value);
運行結果:


Beanshell 的sha-256和sha-512與上面的md5的差不多。只需要將MessageDigest md = MessageDigest.getInstance("md5"); 的md5替換成sha-256/sha512即可.
如下:



浙公網安備 33010602011771號