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])
复制代码





 



posted @   美女爱找茬  阅读(1535)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示