日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Jmeter 脚本中使用base64 加解密、MD5加密

發(fā)布時間:2023/12/20 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Jmeter 脚本中使用base64 加解密、MD5加密 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

在進行日常的性能測試工作中,難免會遇到請求參數(shù)需要進行加密傳輸?shù)那闆r,筆者將根據(jù)自己在測試過程中遇到的問題,說明加密方法的使用(Jmeter 版本為5.1.1)

場景一:請求參數(shù)進行base64加密

場景說明:有A 、B兩個請求,通過調(diào)用請求A,使用邊界提取器獲取A的響應(yīng)中的cust_id值,使用beanShell 后置處理器對cust_id 進行base64 加密。加密后的數(shù)據(jù)再作為請求B的參數(shù)使用。

1. 編寫Jmeter腳本結(jié)構(gòu)


注意:beanShell 后置處理器不是在請求A的內(nèi)部。

2. 在beanShell中調(diào)用base64加密方法


方法一:

import org.apache.commons.codec.binary.Base64;String tmp = Base64.encodeBase64String("${cust_id}".getBytes("utf-8")); log.info("===========" + tmp); vars.put("b64_custId",tmp);

注意:如果使用上述代碼加密后,調(diào)用B請求報錯,可嘗試更換加密方法二

方式二:

import sun.misc.BASE64Decoder; String tmp = new sun.misc.BASE64Encoder().encode("${cust_id}".getBytes()); log.info("=================" + tmp); vars.put("b64_custId", tmp);

3. 使用加密后的參數(shù)


通過查看結(jié)果數(shù),可以看到入?yún)⒅械腸ust_id已經(jīng)變成了解密后的字符串

場景二:響應(yīng)結(jié)果需要進行base64 解密

場景說明:在諸如APP或者小程序中出于安全性的考慮,請求的返回結(jié)果是經(jīng)過base64加密之后的,我們需要進行解密后再判斷請求是否成功。

1. Jmeter 腳本結(jié)構(gòu)

import sun.misc.BASE64Decoder; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject;String res = "eyJlcnJvckNvZGUiOiAiTVMwMDAwMDIiLCJlcnJvck1lc3NhZ2UiIDogIk1pc3NpbmcgUGFyYW1ldGVyIiwiZXJyb3JEZXNjcmlwdGlvbiI6ICJNaXNzaW5nIFBhcmFtZXRlci4ifQ=="; //String aa = prev.getResponseDataAsString(); // 獲取上一個請求的結(jié)果 log.info("原始加密串:"+ res);// base64解密 BASE64Decoder decoder = new BASE64Decoder(); String tmp = new String(decoder.decodeBuffer(res),"utf-8"); log.info("解密后的串:" + tmp);// 字符串轉(zhuǎn)json對象 JSONObject json = JSONObject.parseObject(tmp); String code = json.getString("errorCode"); log.info("返回結(jié)果值:" + code);// 判斷結(jié)果 if(!code.equals("0")){Failure = true;}

代碼說明:

  • 字符串變量res 相當于是請求C的返回結(jié)果。你也可以用 prev.getResponseDataAsString()來直接獲取上一次請求的全部返回結(jié)果。
  • 調(diào)用base64的解密方法對字符串進行解密;
  • 將解密后的字符串轉(zhuǎn)換為json對象,目的是取出我們想要校驗的字段,也可以用正則表達式提取想要校驗的節(jié)點。
  • 判斷斷言結(jié)果
  • 場景三:請求參數(shù)中帶有簽名字段

    場景說明:一般在APP的請求中會涉及到簽名字段,比如前后端開發(fā)人員會協(xié)商一個key,用來和其他的字段一起通過md5加密后生產(chǎn)一個簽名字段sign,再把該字段作為一個請求參數(shù),比如:
    https://xxx.xxx.xx/getinfo?timestamp=1587972142&appid=1231231231313&token=qwrqfqfqqtqg8&sign=tqwsvdfqqwreqrwqrqre==

    生成簽名的步驟:

  • 先協(xié)商好密鑰key=12431414141414144124
  • 獲取所有請求參數(shù)的字符串str1:appid=1231231231313&timestamp=1587972142&token=qwrqfqfqqtqg8
  • 對str1 按照ASCII 進行排序,得到str2:
    appid=1231231231313&timestamp=1587972142&token=qwrqfqfqqtqg8
  • 將str2 和 密鑰key 進行拼接得到str3:
    appid=1231231231313&timestamp=1587972142&token=qwrqfqfqqtqg8&key=12431414141414144124
  • 調(diào)用md5加密算法,對str3進行加密,從而得到sign簽名字段的值。
  • 1. Jmeter 腳本結(jié)構(gòu)


    說明:在需要使用簽名字段的請求上面創(chuàng)建一個beanShell 預(yù)處理程序

    2. 調(diào)用md5加密方法進行加密

    步驟說明:

  • 根據(jù)開發(fā)人員提供的key 先定義好待加密字符串(字符串中可能包含固定的字符串以及其他參數(shù)化變量)
  • 調(diào)用md5加密方法,對字符串進行加密,生成簽名字段后并報存到新的變量中,供下面的請求調(diào)用。
  • 在后面的請求中引用簽名字段
  • import org.apache.commons.codec.digest.DigestUtils;String str = "appid=wxfe88409e05440687&timestamp=${__time(/1000,timeStamp)}&token=qrqvdstgertnberth9&key=0124428123123215641"; String sign = DigestUtils.md5Hex(str); log.info(str); vars.put("md5_sign",sign);

    3. 引用簽名字段

    后面將持續(xù)分享Jmeter在使用過程中的項目經(jīng)驗,如果幫到您,還請給個贊(:

    總結(jié)

    以上是生活随笔為你收集整理的Jmeter 脚本中使用base64 加解密、MD5加密的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。