import _md5
import hashlib
keyString="192006250b4c09247ec02edce69f6a2d"
#所有发送或者接收到的数据定义为字典类型数据
data={
'appid':'wxd930ea5d5a258f4f',
'mch_id':'10000100',
'device_info':'1000',
'body':'test',
'nonce_str':'ibuaiVcKdpRxkhJA',
'string1':'',
'string2':'',
'sign':'fdsfdhgjghjf'
}
#定义函数作用:去除参数的值为空或者参数名为sign的数据,返回参与签名的字典类型数据
def GetSignData(data,secret_token):
signData={}
for key, value in data.items():
if value != "" and key != "secret_token":
signData[key] = value
stringA = SignString(signData,secret_token)
# 创建对象md
md = hashlib.md5()
# 对stringA字符串进行编码
md.update(stringA.encode('utf-8'))
# 数据加密
signValue = md.hexdigest()
# 把加密的结果,小写转换成大写,upper函数
signValue = signValue.upper()
return signValue
#对参数按照key=value的格式,并按照参数名ASCII字典序排序拼接成字符串stringA,最后拼接上secret_token,md5加密后转大写返回。
def SignString(signData,key):
#定义空列表
list=[]
# 定义空字符串
stringA=""
#循环遍历字典数据的键值,取出存放到列表中
for key in signData.keys():
list.append(key)
#对列表的对象进行排序,默认升序,即按照ASCII码从小到大排序
list.sort()
#循环遍历排序后的列表,根据键值取出字典键对应的值
for i in list:
stringA += i+"="+signData[i]+"&"
#参数拼接成需要加密的字符串
stringA = stringA[:-1]+key
# stringA += "secret_token"+"="+key
return stringA```
实现接口 排序加密
最新推荐文章于 2022-06-20 17:00:56 发布