JMeter處理接口簽名之BeanShell實現MD5加密

項目A需要給項目B提供一個接口,這個接口加密了,現在需要測試這個接口,需要怎么編寫腳本呢?實現接口簽名的方式有兩種:BeanShell實現MD5加密和函數助手實現MD5加密,之前已經分享過了函數助手實現MD5加密,今天就來分享下BeanShell實現MD5加密。

一、接口信息

POST /api/agent-pid

json請求參數

{

"app_id":1,

"timestamp":"1667033841",

"pid_num":2,

"sign":xxxxxxxxxxxxxxxxx

}

算法:

1、將請求參數按照鍵名進行升序排序,需要帶上時間戳

即app_id=${app_id}&pid_num=${pid_num}&timestamp=${timestamp}

2、拼接秘鑰,將秘鑰拼接在參數后面

即app_id=${app_id}&pid_num=${pid_num}&timestamp=${timestamp}${key}

3、將拼接后的結果取md5值

即DigestUtils.md5Hex(app_id=${app_id}&pid_num=${pid_num}&timestamp=${timestamp}${key})

二、編寫JMeter腳本

結構如下:添加測試計劃,添加用戶自定義變量app_id,pid_num和key,添加前置處理器BeanShell,通過MD5加密,得到請求參數sign,添加線程組, 添加http請求,添加斷言,添加察看結果樹。

一)添加測試計劃

右鍵文件--新建--測試計劃

二)添加用戶定義的變量

選中測試計劃,右鍵--添加--配置元件--用戶定義的變量

定義三個變量,key,請求參數app_id和pid_num

三)添加前置處理器BeanShell

添加前置處理器BeanShell,來定義兩個變量timestamp和sign。

選中測試計劃,鼠標右鍵--添加--前置處理器--BeanShell PreProcessor,新建成功,命名為:timestamp,另一個變量sign方法類似。

1、時間戳timestamp

調用System.currentTimeMillis()函數,即可獲取時間戳,具體代碼如下:

//獲得系統的時間,單位為毫秒,轉換為秒

long timestamp1 = System.currentTimeMillis()/1000;

//將timestamp轉化為string類型,并復制給變量timestamp

vars.put("timestamp",timestamp1.toString());

2、簽名sign

主要用到md5Hex函數,取MD5值,具體代碼如下:

import org.apache.commons.codec.digest.DigestUtils;

//將請求參數按照鍵名進行升序排序,需要帶上時間戳

//拼接秘鑰,將秘鑰拼接在參數后面

String md5_str = "app_id=${app_id}&pid_num=${pid_num}&timestamp=${timestamp}${key}";

log.info("md5_str:"+ md5_str);

//將拼接后的結果取md5值

String sign = DigestUtils.md5Hex(md5_str);

vars.put("sign",sign);

log.info(sign);

四)添加線程組

鼠標右鍵測試計劃,添加--Threads(Users)--線程組,命名為:test接口。

五)添加HTTP請求

鼠標右鍵線程組--添加--Sample--HTTP請求,命名為:test接口請求,填寫方法、路徑和請求參數的值,四個請求參數,分別為app_id,timestamp,sign,pid_num。

六)添加響應斷言

選中HTTP請求,鼠標右鍵--添加--斷言--響應斷言,即可添加成功

七)添加察看結果樹

選中HTTP請求,鼠標右鍵--添加--監聽器--察看結果樹,即可查看響應結果。

這樣,一個結果腳本就完成了。

我是程序員馨馨,全網ID唯一,轉載請注明出處。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/35316.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/35316.shtml
英文地址,請注明出處:http://en.pswp.cn/news/35316.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

React如何配置env環境變量

React版本: "react": "^18.2.0" 1、在package.json平級目錄下創建.env文件 2、在‘.env’文件里配置環境變量 【1】PUBLIC_URL 描述:編譯時文件的base-href 官方描述: // We use PUBLIC_URL environment variable …

從KM到Cure Models:常用生存分析方法的優缺點

一、引言 生存分析是一種用于研究個體生命長度或事件發生時間的統計方法。在許多領域中,如醫學、社會學、經濟學和工程學等,生存分析被廣泛應用于分析個體的生存時間,并研究相關因素對生存時間的影響。通過生存分析,我們可以評估特…

交換排序——選擇排序和冒泡排序的區別是什么?

今天重溫一下算法,其實剛開始我覺得冒泡排序和選擇排序是一樣的,因為他們排序過程中都是通過相鄰的數據比較找到最小/最大的數據,通過不斷思考和學習才明白,兩者還是有區別的。 冒泡排序 概念 冒泡排序(Bubble Sort)&#xff0…

SpringBoot使用thymeleaf模版引擎配置自定義錯誤頁面

1、要在Spring Boot項目中配置自定義的錯誤頁面&#xff0c;你可以遵循以下步驟&#xff1a; 1.1、pom.xml引入thymeleaf <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId><…

【正版系統】2023熱門短劇SAAS版開源 | 小程序+APP+公眾號H5

當我們在刷百度、D音、K手等各種新聞或短視頻時經常會刷到劇情很有吸引力的短劇廣告&#xff0c;我們點擊廣告鏈接即可進入短劇小程序&#xff0c;小程序運營者通過先免費看幾集為誘耳然后在情節高潮時彈出充值或開VIP會員才能繼續看的模式來賺錢&#xff0c;以超級贅婿、鄉村小…

VS Code中C++程序的調試(Debug)功能

有一個.vscode文件&#xff0c;存放當前工作區相關配置文件的目錄。 launch.json {"version": "0.2.0","configurations": [{"name": "gcc.exe - 生成和調試活動文件", // 該調試任務的名字&#xff0c;啟動調試時會在待…

TCP/IP 下的計算機網絡江湖

〇、引言 在當今數字化時代,計算機網絡宛如廣袤江湖,涵蓋著五大門派:物理層、數據鏈路層、網絡層、傳輸層和應用層。每個門派獨具技能,共同構筑著現代網絡的框架。物理層宛如江湖基石,將比特流傳輸;數據鏈路層如武林傳承,組織數據幀傳遞;網絡層則像導航大師,尋找傳送路…

使用阿里云服務器搭建PostgreSQL主從架構圖文流程

阿里云百科分享使用阿里云服務器搭建PostgreSQL主從架構圖文流程&#xff0c;PostgreSQL被業界譽為最先進的開源數據庫&#xff0c;支持NoSQL數據類型&#xff08;JSON/XML/hstore&#xff09;。本文檔介紹在CentOS 7操作系統的ECS實例上搭建PostgreSQL主從架構的操作步驟。 目…

【Linux操作系統】文件描述符fd

&#x1f525;&#x1f525; 歡迎來到小林的博客&#xff01;&#xff01; ??????&#x1f6f0;?博客主頁&#xff1a;??林 子 ??????&#x1f6f0;?博客專欄&#xff1a;?? Linux之路 ??????&#x1f6f0;?社區 :?? 進步學堂 ??????&#x1…

python單元測試框架(測試固件、批量執行)

python測試框架 在Python語言中應用最廣泛的單元測試框架是unittest和pytest,unittest屬于標準庫&#xff0c;只要安裝了Python解釋器后就可以直接導入使用了,pytest是第三方的庫&#xff0c;需要單獨的安裝。 1.白盒測試原理 在軟件架構的層面來說&#xff0c;測試最核心的…

Kotlin入門:變量和函數——02

目錄 一、Kotlin 基本數據類型 ?編輯 二、變量 val 關鍵字&#xff1a; var 關鍵字: 類型推斷: 可空類型: 三、函數 基本函數語法&#xff1a; 單表達式函數&#xff1a; 默認參數值&#xff1a; 命名參數&#xff1a; 一、Kotlin 基本數據類型 Kotlin 的基本數…

vue數據更新table內容不更新解決方法

場景&#xff1a; table組件綁定的數據變化時&#xff0c;頁面沒有重新渲染&#xff0c;常見于子組件中使用table組件 原理&#xff1a; 創建實例時 數組在vue中沒有被監聽到&#xff0c;屬于非響應式數據&#xff0c;數組的下標變化無法監聽到 解決方式&#xff1a; <e…

SpringSecurity如何放行資源

SpringSecurity配置放行資源 permitAll配置實例 EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter {Overridepublic void configure(HttpSecurity http) throws Exception {http.authorizeRequests().antMatchers("/css/**", …

數據庫事務ACID介紹

一、ACID簡介 ACID&#xff0c;是指數據庫管理系統&#xff08;DBMS&#xff09;在增刪改數據的的過程中&#xff0c;為保證事務&#xff08;transaction&#xff09;的準確性&#xff0c;可靠性等&#xff0c;所必須具備的四個特性&#xff1a;原子性&#xff08;atomicity&a…

【MFC】09.MFC視圖-筆記

MFC視圖窗口&#xff1a;CView類 顯示數據/畫面 我們之前的繪圖消息&#xff0c;都是在框架類上畫出來的 視圖窗口就覆蓋在框架窗口上 視圖窗口本質上也是窗口&#xff0c;只是和框架窗口風格不同 CView類也繼承于CWnd類 CView也能處理消息&#xff0c;因為它繼承于CWnd類…

關于selenium 元素定位的淺度解析

一、By類單一屬性定位 元素名稱 描述 Webdriver API id id屬性 driver.find_element(By.ID, "id屬性值") name name屬性 driver.find_element(By.NAME, "name屬性值") class_name class屬性 driver.find_element(By.CLASS_NAME, "class_na…

25考研:跨專業考研難嗎?

25考研&#xff1a;跨專業考研難嗎&#xff1f; 嘉興校址&#xff1a;嘉興市南湖區中山東路205號嘉華廣場4樓 &#xff08;建國珠寶城旁&#xff09;上元教育 海寧校址&#xff1a;海寧市西山路832號金貿大廈11樓1101號上元教育 桐鄉校址&#xff1a;桐鄉市東悅路吾悅廣場156號…

MAUI+Blazor:隱藏標題欄和問題

文章目錄 前言相關文章代碼問題有必要解決嗎&#xff1f; 前言 最近在研究MAUIBlazor開發&#xff0c;發現一個問題&#xff0c;原生的的標題欄實在是太丑了。 相關文章 MAUI桌面端標題欄設置和窗口調整 MAUI Windows How to completely hide the TitleBar? #15142 MAUI …

Chrome開發者工具介紹

Chrome開發者工具介紹 前言1 打開DevTools2 命令菜單3 Elements面板ConsoleJavaScript調試Network 前言 Chrome開發者工具是谷歌瀏覽器自帶的一款開發者工具&#xff0c;它可以給開發者帶來很大的便利。常用的開發者工具面板主要包含Elements面板、Console面板、Sources面板、…

數據結構——時間復雜度和空間復雜度

1.算法效率 2.時間復雜度 3.空間復雜度 4. 常見時間復雜度以及復雜度oj練習 1.算法效率 1.1 如何衡量一個算法的好壞 如何衡量一個算法的好壞呢&#xff1f;比如對于以下斐波那契數的計算 long long Fib(int N) { if(N < 3) return 1; return Fib(N-1) Fib(N-2); }我們看到…