python對介面中的資料進行md5加密

新夢想IT發表於2022-07-27


 

最近有學員向筆者多次反應, 測試過程 中,比如登入,登入時密碼一般是經過加密之後再進行登入的,如果在進行測試時填寫的密碼是明文的話,那麼進行介面測試時必然是失敗的,那麼要經過怎樣的處理才能登入成功呢?

那麼今天先簡單處理密碼是 md5 加密的情況下,使用 python 進行介面測試時, python 如何處理;

當前使用的是 python3.7 版本;

Python3.7 在處理 md5 加密時,需要匯入模組 hashlib;

python hashlib 提供了常見的摘要演算法,如 MD5,SHA1 等等。

先來看一下 python 是如何把字串加密成 MD5 字串的;

import  hashlib

def  MD5_demo(str):

    md= hashlib.md5()# 建立md5物件

    md .update(str.encode(encoding= 'utf-8' ))

    return  md.hexdigest()

 

if  __name__== "__main__" :

    # 待加密資訊

    str =  '123456'

    md5_str = MD5_demo(str)

    print( '加密後為 :'  + md5_str)

hexdigest() 在英語中 hex 有十六進位制的意思,因此該方法是返回摘要,作為十六進位制資料字串值

注意: update(str.encode(encoding= 'utf-8' )) 這個函式里面需要對字串進行編碼,否則會報 TypeError: Unicode-objects must be encoded before hashing

下面以禪道登陸介面為例進行處理:

透過 fiddler抓包發現,登陸的密碼是加密處理的:

 

以下是程式碼處理結果:

import  requests

import  hashlib

 

def  MD5_login(str):

    zt_pwd = hashlib.md5()

    zt_pwd.update(str.encode(encoding= 'utf-8' ))

     return  zt_pwd.hexdigest()

password =  '123456'  #登陸的使用者密碼=='123456'

url =  'http://192.168.1.105:81/zentao/user-login-L3plbnRhby8=.html'

data = { 'account' : 'admin' , 'password' :MD5_login(password), 'referer' : '/zentao/' }

response = requests.post(url,data=data)  # 傳送post請求

print(response.content.decode( 'utf-8' ))

 


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69940641/viewspace-2907851/,如需轉載,請註明出處,否則將追究法律責任。

相關文章