Python验签排序算法

import json
import hashlib


def md5(str):
    # 创建md5对象
    m = hashlib.md5()
    b = str.encode(encoding='utf-8')
    m.update(b)
    md5_str = m.hexdigest()
    return md5_str


# 判断变量类型
def typeof(variate):
    t = None
    if isinstance(variate, int):
        t = "int"
    elif isinstance(variate, str):
        t = "str"
    elif isinstance(variate, float):
        t = "float"
    elif isinstance(variate, list):
        t = "list"
    elif isinstance(variate, tuple):
        t = "tuple"
    elif isinstance(variate, dict):
        t = "dict"
    elif isinstance(variate, set):
        t = "set"
    return t


def getSign(data, secret):
    if len(data) < 1:
        return "", False
    key_list = sorted(data)  # 获取排序的参数列表
    sign_str = ""
    for k in key_list:
        v = data[k]
        if k != 'sign' and typeof(v) != 'list':
            sign_str += k + '=' + str(v) + '&'
    md5_str = sign_str.rstrip('&') + secret
    # print(md5_str)
    sign = md5(md5_str)
    # print(sign)
    if sign != data['sign']:
        return sign, False
    return sign, True


if __name__ == '__main__':
    jsonStr = '{"zone_id":"1","server_id":"1","role_list":["123456"],"time":"1624240969","sign":"f249dabd9a9ee9bb0a0c434d3221b3be"}';
    json_data = json.loads(jsonStr)
    # print(json_data)
    secretKey = "aabbccddeeffgg"  # 秘钥
    # print(getSign(json_data, secretKey))
    sign, signFlag = getSign(json_data, secretKey)
    if signFlag:
        print("验签成功", sign)
    else:
        print("验签失败", sign)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值