zoukankan      html  css  js  c++  java
  • request 中url拼接排序参数与签名算法

    一、参数要求:

    {

    appId:应用在后台创建应用时分配的应用编号,与应用密钥一一对应

    sign:按照当前请求参数名的字母序进行升序排列(排序时区分大小写,除sign外,其它值不为空的参数都参与签名), 将所有参数值组合以key=value 的形式拼成一个新字符串,不同参数值“&”之间没有任何分隔符,最后加上对应的签名密钥appKey 进行签名运算。 如进行MD5签名运算的串为 MD5(key1=value1&key2=value2appKey)

    time: 1970年以来的毫秒数,每次请求都要更新,有效期5分钟

    version: 接口版本号,目前默认写1.0

    }

    二、请求path示例:http://test.com/**/**?account=string&appId=string&sign=string&time=0&version=string

    三、代码实现:

    
    
    # coding=utf-8
    from urllib.parse import urlencode
    from collections import OrderedDict
    import hashlib
    from base_utils.crypte import Md5
    import time
    
    params = {
                "version": "1.0",
                "account": "zhangsan",
                "appId": "gyAppId",
                "time": int(time.time() * 1000)
            }
    
    def md5(self, data):
         self.md5 = hashlib.md5()
         self.md5.update(data.encode("utf-8"))
         return self.md5.hexdigest()
    
    def url_join(server, uri, appkey, params):
        args = OrderedDict()
        for key in sorted(params.keys()):
            args.update({key: params[key]})
        nparams = urlencode(args)
        args = urlencode(args) + appkey
        sign = Md5().md5(args)
        prefix, suffix =nparams.split("&time=")
        print("".join([server, uri, '?',prefix,
                       "&sign=", sign, "&time=", suffix]))
        return "".join([server, uri, '?',prefix,
                       "&sign=", sign, "&time=", suffix])
    
    




     
    
    
    
    
    
    三十六般武艺,七十二般变化,修练出个人品牌并发出光芒
  • 相关阅读:
    叨叨叨
    四舍五入VS银行家舍入
    是雏还是鹰——编程规范之变量命名
    .Net下二进制形式的文件(图片)的存储与读取(原创)
    asp.net中<%%>形式的用法(原创)
    让Hashtable支持自定义排序(原创)
    .NET下的迭代器(Iterator)模式
    本地视频播放-ios
    cocos2dx srand(time(NULL))重新设置一个随机种子
    cocos2dx 游戏重置方法
  • 原文地址:https://www.cnblogs.com/deeptester-vv/p/11214187.html
Copyright © 2011-2022 走看看