在Jmeter日常實(shí)踐中赢织,大家應(yīng)該都遇到過(guò)接口傳參需要加密的情況止剖。以登陸為例腺阳,用戶名和密碼一般都需要進(jìn)行加密傳輸,在服務(wù)端再進(jìn)行解密穿香,這樣安全系數(shù)會(huì)更高亭引,但在使用jmeter進(jìn)行接口測(cè)試的時(shí)候,怎樣發(fā)送加密的參數(shù)呢扔水,下面以AES加密為例痛侍,來(lái)示范一下如何在jmeter中對(duì)參數(shù)進(jìn)行加密朝氓。
一魔市、AES加密算法調(diào)試(java+myeclipse)
首先要準(zhǔn)備一個(gè)AES算法類主届,并調(diào)試算法是否可用,我是在網(wǎng)上找的代碼待德,調(diào)試可用之后導(dǎo)出的jar包君丁,詳解一下步驟
1、在myeclipse中新建一個(gè)java工程将宪,我命名為了jmeterTest绘闷,可以看到j(luò)meterTest下有src這個(gè)文件夾。然后在src文件夾下新建一個(gè)包较坛,我命名為了AES印蔗。此時(shí)的包AES是空的,然后要在AES包中創(chuàng)建一個(gè)java類丑勤,我命名為了AESUtil
2华嘹、java類已經(jīng)創(chuàng)建好了,現(xiàn)在要在類中添加代碼了法竞,添加下面這段AES加密算法之后耙厚,程序會(huì)提示錯(cuò)誤,因?yàn)橛袀€(gè)包需要引入岔霸,包放在網(wǎng)盤(pán)里鏈接: https://pan.baidu.com/s/1OxYyK1nI0PhpCofgYXXWrQ 提取碼: s4aw 薛躬,選擇工程build path將包導(dǎo)入到工程中就可以了。根據(jù)main函數(shù)中的調(diào)用來(lái)測(cè)試一下你的程序加密是不是好用呆细。
package AES;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
import org.apache.commons.codec.binary.Base64;
/**
* @version V1.0
* @desc AES 加密工具類
*/
public class AESUtil {
private static String key = "hgfjhgfjsf";//此處的密匙型宝,可以找開(kāi)發(fā)同事提供,我瞎編了一個(gè)絮爷,要根據(jù)實(shí)際項(xiàng)目來(lái)
private static final String KEY_ALGORITHM = "AES";
private static final String DEFAULT_CIPHER_ALGORITHM = "AES/ECB/PKCS5Padding";//默認(rèn)的加密算法
/**
* AES 加密操作
*
* @param content 待加密內(nèi)容
* @param password 加密密碼
* @return 返回Base64轉(zhuǎn)碼后的加密數(shù)據(jù)
*/
public static String encrypt(String src) {
// 判斷密鑰是否為空
if (key == null) {
System.out.print("密鑰不能為空 軟件測(cè)試學(xué)習(xí)交流 273462828");
return null;
}
try {
SecretKeySpec skeySpec = new SecretKeySpec(key.getBytes("utf-8"), "AES");
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding"); // 算法/模式/補(bǔ)碼方式
cipher.init(Cipher.ENCRYPT_MODE, skeySpec);
byte[] encrypted = cipher.doFinal(src.getBytes("utf-8"));
return new Base64().encodeToString(encrypted);//base64
// return binary(encrypted, 16); //十六進(jìn)制
} catch (Exception ex) {
Logger.getLogger(AESUtil.class.getName()).log(Level.SEVERE, null, ex);
}
return null;
}
public static void main(String[] args) {
//用來(lái)測(cè)試加密后的字符串诡曙,我測(cè)試的是“1234”
String s = "1234";
System.out.println("s:" + s);
String s1 = AESUtil.encrypt(s);
System.out.println("s1:" + s1);
}
}
3、程序調(diào)試完畢之后略水,需要導(dǎo)出jar包价卤,選中AES包,右擊Exoprt渊涝,選擇Runnable JAR File導(dǎo)出即可慎璧,至此我要在jmeter中使用的jar包就準(zhǔn)備好了。
二跨释、在jmeter中導(dǎo)入jar包胸私,在需要進(jìn)行參數(shù)加密的請(qǐng)求中添加BeanShell PreProcessor。
如果對(duì)軟件測(cè)試鳖谈、接口測(cè)試岁疼、自動(dòng)化測(cè)試、性能測(cè)試缆娃、LR腳本開(kāi)發(fā)捷绒、面試經(jīng)驗(yàn)交流瑰排。感興趣可以273462828,群內(nèi)會(huì)有不定期的發(fā)放免費(fèi)的資料鏈接暖侨,這些資料都是從各個(gè)技術(shù)網(wǎng)站搜集椭住、整理出來(lái)的,如果你有好的學(xué)習(xí)資料可以私聊發(fā)我字逗,我會(huì)注明出處之后分享給大家京郑。