jmeter AES加密/解密
首先了解一下,什么是AES加密/解密?AES(全稱:Advanced Encryption Standard)對稱加密算法,也就是加密和解密用到的密鑰是相同的,這種加密方式加密速度非???,
適合經(jīng)常發(fā)送數(shù)據(jù)的場合,如:數(shù)據(jù)加密存儲、網(wǎng)絡(luò)通信加密等。
在進(jìn)行接口測試或接口壓測時,有些比較核心的接口有可能會用AES方式對接口的入?yún)⒒蝽憫?yīng)內(nèi)容進(jìn)行加密/解密。
Jmeter 對AES加密/解密,當(dāng)前可以通過beanshell 的方式處理。以下是通過網(wǎng)上找了一段AES加密/解密的java代碼,根據(jù)需要稍微改動一點內(nèi)容,
看一下怎么在jmeter中將明文進(jìn)行加密和解密。

完整代碼:
import javax.crypto.Cipher; import javax.crypto.KeyGenerator; import javax.crypto.SecretKey; import javax.crypto.spec.SecretKeySpec; import java.security.SecureRandom; import java.util.Base64; public class AESUtil { // AES密鑰算法 private static final String KEY_ALGORITHM = "AES"; // 加密/解密算法/工作模式/填充方式 private static final String CIPHER_ALGORITHM = "AES/ECB/PKCS5Padding"; // 生成密鑰 public static String generateAESKey() throws Exception { KeyGenerator keyGenerator = KeyGenerator.getInstance(KEY_ALGORITHM); keyGenerator.init(128, new SecureRandom()); // 192 and 256 bits may not be available SecretKey secretKey = keyGenerator.generateKey(); return Base64.getEncoder().encodeToString(secretKey.getEncoded()); } // AES加密 public static String encryptAES(String data, String key) throws Exception { Cipher cipher = Cipher.getInstance(CIPHER_ALGORITHM); SecretKeySpec secretKeySpec = new SecretKeySpec(Base64.getDecoder().decode(key), KEY_ALGORITHM); cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec); byte[] encrypted = cipher.doFinal(data.getBytes()); return Base64.getEncoder().encodeToString(encrypted); } // 解密 public static String decryptAES(String data, String key) throws Exception { Cipher cipher = Cipher.getInstance(CIPHER_ALGORITHM); SecretKeySpec secretKeySpec = new SecretKeySpec(Base64.getDecoder().decode(key), KEY_ALGORITHM); cipher.init(Cipher.DECRYPT_MODE, secretKeySpec); byte[] decrypted = cipher.doFinal(Base64.getDecoder().decode(data)); return new String(decrypted); } public static void main(String[] args) throws Exception { String key = generateAESKey(); String originalText = "Hello World!"; String encryptedText = encryptAES(originalText, key); System.out.println("Encrypted Text: " + encryptedText); // 解密操作 // String decryptedText = decryptAES(encryptedText, key); // System.out.println("Decrypted Text: " + decryptedText); } } AESUtil aes_obj = new AESUtil(); String key = aes_obj.generateAESKey(); String originalText = "Hello World!"; String value = aes_obj.encryptAES(originalText,key); log.info("密鑰key: "+key); log.info("AES加密結(jié)果:"+value); //解密 String decryptedText = aes_obj.decryptAES(value, key); log.info("AES解密結(jié)果:"+decryptedText); // 將加密結(jié)果設(shè)置為jmeter參數(shù) vars.put("AES_value",value);
運行結(jié)果:


浙公網(wǎng)安備 33010602011771號