ASCII code ordering and md5 encryption

import hashlib

data = {
"app_key": "25617551",
"fields": "cid,parent_cid,name,is_parent",
"format": "json",
"method ": "taobao.item.seller.get",
"parent_cid": "0",
"sign_method ": "md5",
"timestamp": "2019-06-21 13:05:00",
"v": "2.0",
"sign": "AFB4A78BCE0FDB5EFE119ADD9A39762A"
}


class SignatureAndVerification(object):
"""MD5签名和验签"""

@classmethod
def data_processing(cls, data):
"""
:param data: the data to be signed, dictionary type del Data [" Sign "] IF" Sign "in Data: "" "
: return: string processing format: Parameter Name = Value, and ligated



if "sign_type" in data:
del data["sign_type"]
dataList = []
for key in sorted(data):
if data[key]:
dataList.append("%s%s" % (key, data[key]))
return "".join(dataList).strip()

@classmethod
def md5_sign(cls, data):
"""
MD5签名
:param api_key: MD5签名需要的字符串
:return: 签名后的字符串sign
"""
data = cls.data_processing(data) # + api_key.strip()
md5 = hashlib.md5()
md5.update(data.encode(encoding='UTF-8'))
return md5.hexdigest()

@classmethod
md5_verify DEF (CLS, Data, Signature):
"" "
MD5 check test
: param data: received data
: param signature: received Sign
: return: check test results, the Boolean value
" ""
IF cls.md5_sign (Data ) == Signature:
return True
the else:
return False


IF the __name__ == '__main__':
SignatureAndVerification.data_processing (Data)
SignatureAndVerification.md5_sign (Data)















# -*- coding: utf-8 -*-
import requests
import json
from common.md5_sign import SignatureAndVerification


def productlist():
url = 'http://192.168.106.143:8089/product/tb/items/get?'
data = {
"sessionId": "",
"pageNo": "1",
"pageSize": "1",
"keyWord": "女装",
"sign": ""
}

SignatureAndVerification.data_processing(data) # 按ASCII码排序
sgin = SignatureAndVerification.md5_sign(data) # md5加密

data['sign'] = sgin
r = requests.post(url, data=data)
rr = json.dumps(json.loads(r.text), indent=2, ensure_ascii=False)
print(rr)


def productinfo():
url = 'http://192.168.106.143:8089/product/tb/info/get?'
data = {
"sessionId": "25617551",
"numIids": "591727331053",
"sign": ""
}
SignatureAndVerification.data_processing(data) # 按ASCII码排序
sgin = SignatureAndVerification.md5_sign(data) # md5加密

data['sign'] = sgin
r = requests.post(url, data=data)
rr = json.dumps(json.loads(r.text), indent=2, ensure_ascii=False)
print(rr)

Guess you like

Origin www.cnblogs.com/wapn/p/11081878.html