import re from hashlib import md5 """ 用于生成网售签名 """ class Sign: def __init__(self, salt='ly725xw701'): self.salt = salt def __ksort(self, params): """ 请求参数排序 :params: 未排序的参数字典 :return: 排列后的请求参数字符串 """ sorted_params = sorted(params.items(), key=lambda k: k[0]) p = [f'{k}={v}' for k, v in sorted_params] params_str = '&'.join(p) return params_str def __generate_sign(self, params): """ 生成签名方法 :param params: 未排序的参数字典 :param salt: 盐值(授权码) :return: 生成签名 """ str0 = self.salt + self.__ksort(params) m1 = md5(str0.encode()).hexdigest() str1 = m1 + self.salt sign = md5(str1.encode()).hexdigest() return sign def add_sig(self, params): """ 添加sig到params :param params: :return: """ sig = self.__generate_sign(params) params.update({'_sig': sig}) return params