基于微信签名signature获取(实例讲解)

yizhihongxing

下面我将详细讲解“基于微信签名signature获取(实例讲解)”的完整攻略。

什么是微信签名signature

微信签名signature 是一种防止恶意攻击的验证方式。在微信公众号应用中,验证请求来源的正确性是至关重要的。签名signature是由公众号Token、时间戳timestamp和随机字符串noncestr三个参数按照字典序排序后通过SHA1加密后得出的。具体的公式为:signature=sha1(sort(Token,Timestamp,Noncestr))

如何获取微信签名signature

  1. 定义函数

创建一个名为signature的函数。

import hashlib
import time
import random
import string

def signature(token):
    # 定义noncestr
    noncestr = ''.join(random.choice(string.ascii_letters + string.digits) for _ in range(15))
    # 获取当前时间戳
    timestamp = int(time.time())
    # 排序并加密
    sort_list = [token, str(timestamp), noncestr]
    sort_list.sort()
    sort_str = ''.join(sort_list)
    sha1 = hashlib.sha1()
    sha1.update(sort_str.encode('utf-8'))
    signature = sha1.hexdigest()
    return signature, timestamp, noncestr
  1. 调用函数

将微信公众号开发中所填写的Token作为参数传入。

token = 'your_token_here'
signature, timestamp, noncestr = signature(token)

示例

示例1

Token:test_token

import hashlib
import time
import random
import string

def signature(token):
    # 定义noncestr
    noncestr = ''.join(random.choice(string.ascii_letters + string.digits) for _ in range(15))
    # 获取当前时间戳
    timestamp = int(time.time())
    # 排序并加密
    sort_list = [token, str(timestamp), noncestr]
    sort_list.sort()
    sort_str = ''.join(sort_list)
    sha1 = hashlib.sha1()
    sha1.update(sort_str.encode('utf-8'))
    signature = sha1.hexdigest()
    return signature, timestamp, noncestr

token = 'test_token'
signature, timestamp, noncestr = signature(token)
print('微信签名signature:', signature)
print('时间戳timestamp:', timestamp)
print('随机字符串noncestr:', noncestr)

运行结果:

微信签名signature: 9bf716c4dffb5bda5ceef43d68f87c3ccd91b46c
时间戳timestamp: 1628016510
随机字符串noncestr: IQ8yvUtjzTGVzvC

示例2

Token:hello_world

import hashlib
import time
import random
import string

def signature(token):
    # 定义noncestr
    noncestr = ''.join(random.choice(string.ascii_letters + string.digits) for _ in range(15))
    # 获取当前时间戳
    timestamp = int(time.time())
    # 排序并加密
    sort_list = [token, str(timestamp), noncestr]
    sort_list.sort()
    sort_str = ''.join(sort_list)
    sha1 = hashlib.sha1()
    sha1.update(sort_str.encode('utf-8'))
    signature = sha1.hexdigest()
    return signature, timestamp, noncestr

token = 'hello_world'
signature, timestamp, noncestr = signature(token)
print('微信签名signature:', signature)
print('时间戳timestamp:', timestamp)
print('随机字符串noncestr:', noncestr)

运行结果:

微信签名signature: 3d9c1f2b23d4783386e9f63845dbdf1ec3d05e76
时间戳timestamp: 1628016567
随机字符串noncestr: QhdnWThEpNjidLx

以上就是基于微信签名signature获取的完整攻略,希望对您有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:基于微信签名signature获取(实例讲解) - Python技术站

(0)
上一篇 2023年6月8日
下一篇 2023年6月8日

相关文章

  • 14款NodeJS Web框架推荐

    14款NodeJS Web框架推荐的完整攻略 Node.js是一种流行的服务器端JavaScript运行时环境,为开发者提供了一种快速构建高性能Web应用程序的工具。在Node.js中,有许多Web框架可供选择,以帮助开发者构建灵活、可扩展的Web应用程序。以下是14款NodeJS Web框架的推荐,其中包括: 1. Express Express是其中一款…

    node js 2023年6月8日
    00
  • node-red File读取好保存实例讲解

    下面是node-red对于文件读取和保存的完整攻略: 1. 首先安装node-red的fs模块 在使用node-red读取和保存文件之前,需要先安装node-red的fs模块。打开终端窗口,进入到node-red的安装目录下,然后输入以下命令进行fs模块的安装: npm install fs –save 2. 读取文件 在node-red中,使用fs模块的…

    node js 2023年6月8日
    00
  • JavaScript 中什么时候使用 Map 更好

    当我们需要在 JavaScript 中存储以键值对形式存在的数据时,通常使用对象。但是,在某些情况下,使用 Map 数据结构可能更好。 Map 数据结构简介 Map 是 JavaScript 中的一种数据结构,它允许我们将对象作为键,来存储和查找与其相关的数据。Map 与对象类似,但是它有以下优势: Map 可以使用不同类型的值作为键,而对象只支持字符串和符…

    node js 2023年6月8日
    00
  • 关于npm主版本升级及其相关知识点总结

    关于npm主版本升级及其相关知识点总结,我会从以下几个方面逐一进行讲解: npm版本号格式 npm主版本升级的含义 如何进行npm主版本升级 升级后的注意事项 1. npm版本号格式 在深入讲解npm主版本升级之前,我们首先需要了解npm版本号的格式。npm版本号是由三个部分组成的,分别是:主版本号、次版本号和修订号,格式为:X.Y.Z。 其中,X代表主版本…

    node js 2023年6月8日
    00
  • Nodejs 发布自己的npm包并制作成命令行工具的实例讲解

    下面将详细讲解如何发布自己的npm包并制作成命令行工具的步骤: 准备工作 安装Node.js环境 注册npm账号或者使用已有的npm账号 发布npm包 创建一个文件夹,命名为my-package(名字可以自己定义)。 在my-package文件夹下创建一个package.json文件。 { "name": "my-package…

    node js 2023年6月8日
    00
  • node连接MySQL数据库的3种方式总结

    当使用Node.js进行web开发时,连接到关系型数据库MySQL是一项非常重要的任务。本文将总结三种连接MySQL数据库的方式。 1.使用原生的Node.js包连接 在Node.js中,使用原生的mysql包可以轻松地连接MySQL数据库。首先,需要安装mysql包: npm install mysql 然后可以创建一个连接对象,并执行SQL查询: con…

    node js 2023年6月8日
    00
  • 详解基于React.js和Node.js的SSR实现方案

    下面我将为你详细讲解“详解基于React.js 和Node.js的SSR实现方案”的完整攻略。 什么是SSR SSR(Server-Side Rendering )是指在服务器端生成组件对应的 HTML 字符串,并将其响应给客户端。与传统的SPA(Single Page Application)开发模式不同,SSR不仅可以提高首屏加载速度,而且可以提高SEO…

    node js 2023年6月8日
    00
  • 一文详解Node.contain 函数兼容处理

    一文详解Node.contains函数兼容处理 介绍 Node.contains函数是DOM API中比较常用的一个函数,用来判断一个DOM元素是否包含另一个DOM元素。但是在不同的浏览器环境下,该函数的返回值不完全一致,因此需要进行兼容处理。本文将详细介绍Node.contains函数的用法以及兼容处理的方法。 Node.contains函数用法 Node…

    node js 2023年6月8日
    00
合作推广
合作推广
分享本页
返回顶部