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...