python怎么操作_如何利用 Python 完成验签操作

柠檬班Python8期的佑佑以及Python7期的掠掠同学昨天都私下问华华老师如何利用Python完成验签的操作。

今天我们就以佑佑的例子来跟大家进行简单的说明以及操作!

01什么是验签

用非常简单的话来描述:有一个发送消息的端 A 有一个接收消息的端B ,以及A发给B的信息 msg,发送过程要进行签名(类似于对数据加密成一个sign)

A对发送的msg进行加密签名,随请求发送一个sign。

B接收消息,要对sign进行验签,检测消息发送端以及来源是否安全与正确。

注意:sign的生成跟发送的信息有关,且有专门的加密算法。

02情景再现

加密的算法如下所示(Python代码):

请求的数据如下所示:

param={"inputCodes":["6932608700850"],"terminal":{"status":1,"channel":"D002","storeCode":"2107","passage":"D002","s

toreName":“柠檬班Python全栈自动化”,

"identity":"","maxProductCount":5,"posId":"D002"}}

随请求发送的请求头如下(sign表示这里需要传递签名后的数据):

header={"client_id":"DataSync","sign":"D74259421E46D25C9E81CF991B7075DB","Content-Type":"application/json;charset=UTF-8"}

要求以及说明:

a、请求传递的数据param以及利用md5Encode函数对参数进行加密生成的sign的字段顺序要一模一样

b、难点在于:param是一个字典,无法保证它的顺序

c、解题思路:对字典param进行排序,使之成为有序的字典形式

03 解决难题

先利用collections模块里面的OrderedDict来对字典完成排序from collections import OrderedDict

利用md5Encode函数对param进行加密,但是md5Encode只能对字符串进行加密,所以要先利用json转成字符串。

把sign替换到head这个数据里面去,发起请求

最后完成的请求如下所示:

验签的操作就完成了!

这个还是一种非常简单的验签,平常可能会需要添加时间戳等变动字段,但是解决方案是一样的!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值