下面我将详细讲解“基于微信签名signature获取(实例讲解)”的完整攻略。
什么是微信签名signature
微信签名signature 是一种防止恶意攻击的验证方式。在微信公众号应用中,验证请求来源的正确性是至关重要的。签名signature是由公众号Token、时间戳timestamp和随机字符串noncestr三个参数按照字典序排序后通过SHA1加密后得出的。具体的公式为:signature=sha1(sort(Token,Timestamp,Noncestr))
。
如何获取微信签名signature
- 定义函数
创建一个名为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
- 调用函数
将微信公众号开发中所填写的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技术站