Python加密(MD5)介面引數生成sign

2021-10-07 18:48:10 字數 2162 閱讀 8675

python加密(md5)介面引數生成sign

為了防止api呼叫過程中被黑客惡意篡改,呼叫任何乙個api都需要攜帶簽名,top服務端會根據請求引數,對簽名進行驗證,簽名不合法的請求將會被拒絕。top目前支援的簽名演算法有: md5(本介面通用引數裡面sign_method的值為md5),簽名大體過程如下:

對所有api請求引數(包括公共引數和業務引數,但除去sign引數和byte型別的引數),根據引數名稱的ascii碼表的順序排序。如: foo=1, bar=2, foo_bar=3, foobar=4排序後的順序是bar=2, foo=1, foo_bar=3, foobar=4。

將排序好的引數名和引數值拼裝在一起,根據上面的示例得到的結果為:bar2foo1foo_bar3foobar4

將摘要得到的位元組流結果使用十六進製制表示,如: hex(「helloworld」.getbytes(「utf-8」)) = 「68656c6c6f776f726c64」

說明:md5是128位長度的摘要演算法,用16進製表示,乙個十六進製制的字元能表示4個位,所以簽名後的字串長度固定為32個十六進製制字元。

一、介面的請求的引數(包括共同引數)進行組合

二、將引數進行ascll排序

三、將引數拼接為乙個字串

四、字串進行md5加密

def

ascll_sort

(requests_parm)

:"""ascll碼排序"""

defsort

(param)

:"""param引數做處理"""

return requests_parm(

sorted

(param.items())

)return sort

@ascll_sort

defformat_parameter

(sort_date)

:"""

拼接引數

:param sort_data: 裝飾器返回的引數

:return: 所有引數拼成乙個字串

"""arr =

for data in sort_date:

for a in data:

parameter =

''.join(

str(a))''

.join(arr)

return param

defmd5_sign

(format_parameter)

:"""

md5資料加密

:param encrypt: format_parameter返回的字串

:return: 返回32位 16進製制 大寫

"""defstr_md5

(param)

: md5 = hashlib.md5(

) md5.update(param.encode())

sign= md5.hexdigest(

)return format_parameter(sign.upper())

return str_md5

@md5_sign

defsign

(sign)

:"""請求url"""

md5_sign =

return md5_sign

def

request_url

(parm, sign)

: data =

dict

(parm,

**sign)

response= requests.get(url, data)

print

(response.json())

if __name__ ==

'__main__'

: requests_data = get_access_token(

)# get_access_token介面請求引數

str_data = format_parameter(requests_data)

# 所有引數格式化成字串

requests_sign = sign(str_data)

# 加密md5 變成sign

request_url(requests_data, requests_sign)

jmeter測試MD5加密介面

1 執行緒組下新增前置處理器beanshell 預處理程式 import org.apache.commons.codec.digest.digestutils 匯入md5加密需要用到的jar包 宣告你需要拼接的字串 string key string requesttime 生成時間 string...

python 使用md5加密

python中使用md5進行加密字串 author administrator coding utf 8 import hashlib aa 123456 需要加密的字串 defmd5encode str 建立md5物件 m hashlib.md5 m.update str 傳入需要加密的字串進行m...

加密方法 MD5加密

一.md5加密演算法 1.1 md5演算法的定義 md5是雜湊雜湊演算法,對於md5而言,有兩個特性是很重要的,第一 明文資料經過雜湊以後的值是定長的 第二 是任意一段明文資料,經過雜湊以後,其結果必須永遠是不變的。前者的意思是可能存在有兩段明文雜湊以後得到相同的結果。md5是雜湊雜湊演算法,對於m...