python实现微信hmac_sha256和md5加密签名

python实现微信的hmac_sha256加密和md5加密,亲测可用。
md5_sign函数实现微信的md5加密签名,
hmac_sha256函数实现微信的hmac_sha256加密签名。

参考https://blog.csdn.net/weixin_42296492/article/details/89331841

import xmltodict

class WXUtils(object):
    """关于微信支付的小工具"""
    @staticmethod
    def random_str():
        """
        随机32位字符串
        """
        return ''.join(random.sample(string.ascii_letters + string.digits, 32))

    @staticmethod
    def md5_sign(param: dict, shop_key):
        """
        param: 需要签名的字典数据
        shop_key: 商户平台的密钥
        对参数进行MD5加密,获取签名
        """
        stringA = ""
        ks = sorted(param.keys())
        # 排序
        for k in ks:
            stringA += (k + "=" + str(param[k]) + "&")
        # 拼接商户key
        stringSignTemp = stringA + 'key=' + shop_key
        # md5加密
        hash_md5 = hashlib.md5(stringSignTemp.encode('utf-8'))
        sign = hash_md5.hexdigest().upper()
        return sign

    @staticmethod
    def hmac_sha256_sign(data: dict, key):
        """
        data: 需要签名的字典数据
        key: 商户平台设置的密钥key
        获取微信的hmac_sha256签名
        """
        string_a = ""
        ks = sorted(data.keys())
        # 排序
        for k in ks:
            string_a += (k + "=" + str(data[k]) + "&")
        # 拼接商户key
        sign_temp = string_a + 'key=' + key
        key = key.encode('utf-8')
        message = sign_temp.encode('utf-8')
        sign = hmac.new(key, message, digestmod=sha256).hexdigest().upper()
        return sign

    @staticmethod
    def dict_to_xml(data):
        """
        将字典转换为xml
        """
        data = {'xml': data}
        return xmltodict.unparse(data)

    @staticmethod
    def xml_to_dict(xml):
        """
        将xml数据转换为字典
        """
        return xmltodict.parse(xml)
上一篇:期望


下一篇:Rust定义并实例化结构体