隨著互聯網技術的發展,服務安全性和數據安全性變的越來越重要,提供接口服務的系統往往會應用各種加密技術,保證接口的安全調用,如何應用工具來實現加密接口測試成為一項必要技能。在講解如何用Jmeter實現接口安全性測試之前,先來了解一下常見的加密算法,測試同學可根據不同的加密算法類型和程序猿&程序猿溝通,獲取所需的信息,實現加密接口的處理。
摘要算法
對明文編碼生成信息摘要,以防止被篡改。比如MD5使用的是Hash算法,無論多長的輸入,MD5都會輸出長度為128bits的一個串。
摘要算法不要秘鑰,客戶端和服務端采用相同的摘要算法即可針對同一段明文獲取一致的密文
對稱加密
對稱加密算法是共享密鑰加密算法,在加密解密過程中,使用的密鑰只有一個。發送和接收雙方事先都知道加密的密鑰,均使用這個密鑰對數據進行加密和解密。
數據加密:在對稱加密算法中,數據發送方將明文 (原始數據) 和 加密密鑰一起經過加密處理,生成復雜的密文進行發送。
數據解密:數據接收方收到密文后,使用加密的密鑰及相同算法的逆算法對加密的密文進行解密,將使其恢復成可讀明文。
非對稱加密
非對稱加密算法,有兩個密鑰,一個稱為公開密鑰 (publickey),另一個稱為 私有密鑰 (private key),加密和解密使用的是兩個不同的密鑰,所以這種算法稱為非對稱加密算法。
如果使用公鑰對數據進行加密,只有用對應的私鑰才能進行解密。
如果使用 私鑰對數據進行加密,只有用對應的公鑰才能進行解密。
常見加密算法的處理方式
根據上述常見的加密算法,測試人員在測試不同的加密接口可采用下述的方法處理加密接口
摘要算法(MD5.SHA1 ):造接口數據前調用MD5,SHA1進行編碼,服務端對比編碼后的字符串是否一致。
對稱加密算法(AES,DES ):造接口數據前從開發獲取對稱公鑰,基于對稱公鑰可以加密請求數據,解密響應報文。
非對稱加密算法(RSA):造接口數據前從開發獲取公鑰私鑰去加密解密接口數據
下面以Jmete為例介紹如何實現加密接口的處理,目前有一接口在服務器實現邏輯處理以前會對接口數據進行SHA加密,服務器獲取到加密接口數據以后先解密和驗證數據是否合法有效,再進行邏輯處理。針對這種接口測試的時候,在發起請求以前,我們需要對接口進入如下特殊處理:
和開發溝通接口加密的算法以及需要的信息,如果是SHA加密,和開發溝通獲取加密的秘鑰,以及加密和編碼的關鍵字符串
在發起接口請求以前,對接口明文數據進行預處理,在Jmeter的接口實現中,可以通過添加Beanshell腳本,在Beanshell腳本中基于上一個步驟獲取到的信息,采用和服務端相同的加密方法和加密流程對接口明文進行加密和編碼
基于加密后的密文發起加密請求
作 者:Testfan Kitty
出 處:微信公眾號:自動化軟件測試平臺






