如何利用 Python 完成验签操作
2021-04-22 20:07
816 查看
一、什么是验签:
用非常简单的话来描述:有一个发送消息的端 A 有一个接收消息的端B ,以及A发给B的信息 msg,发送过程要进行签名(类似于对数据加密成一个sign)
A对发送的msg进行加密签名,随请求发送一个sign
B接收消息,要对sign进行验签,检测消息发送端以及来源是否安全与正确。
注意:sign的生成跟发送的信息有关,且有专门的加密算法。
二、情景再现:
1)加密的算法如下所示(Python代码):
2)请求的数据如下所示:
3)随请求发送的请求头如下(sign表示这里需要传递签名后的数据):
4)要求以及说明:
请求传递的数据param以及利用md5Encode函数对参数进行加密生成的sign的字段顺序要一模一样
难点在于:param是一个字典,无法保证它的顺序
解题思路:对字典param进行排序,使之成为有序的字典形式
三、解决难题:
先利用collections模块里面的OrderedDict来对字典完成排序 from collections import OrderedDict
利用md5Encode函数对param进行加密,但是md5Encode只能对字符串进行加密,所以要先利用json转成字符串。
把sign替换到head这个数据里面去,发起请求
最后完成的请求如下所示:
验签的操作就完成了!这个还是一种非常简单的验签,平常可能会需要添加时间戳等变动字段,但是解决方案是一样的!
欢迎关注!
相关文章推荐
- python中利用await关键字如何等待Future对象完成详解
- 【利用Python进行数据分析——经验篇3】如何操作DataFrame中的列的数据格式(转为百分数、保留4位小数)
- 如何利用Python和win32编程避免重复性体力劳动(二)——菜单操作:GetMenu,GetSubMenu,GetMenuItemID以及wParam的HIWORD&LOWORD
- 如何利用Python和VC6.0对SQLite数据库进行操作
- 如何利用Python和win32编程避免重复性体力劳动(四)——下拉列表操作:CB_SETCURSEL、CBN_SELENDOK和CBN_SELCHANGE
- 如何利用Python和win32编程避免重复性体力劳动(二)——菜单操作:GetMenu,GetSubMenu,GetMenuItemID以及wParam的HIWORD&LOWORD
- 如何利用Python和win32编程避免重复性体力劳动(三)——文本框操作:WM_GETTEXT 和WM_SETTEXT
- 如何利用Python和win32编程避免重复性体力劳动(三)——文本框操作:WM_GETTEXT 和WM_SETTEXT
- 利用python脚本如何简化jar操作命令
- PHP如何利用Python实现对PDF文件的操作
- 如何利用Python和win32编程避免重复性体力劳动(四)——下拉列表操作:CB_SETCURSEL、CBN_SELENDOK和CBN_SELCHANGE
- 如何在主页的导航栏中完成"单击加号"使之变为减号的操作
- 利用python fabric模块写的批量操作远程主机脚本(命令执行,上传、下载文件)
- python中的list如何进行相减操作或者将list分片
- selenium webdriver学习(十三)------------如何利用Actions类模拟鼠标和键盘的操作
- 如何利用win7文件库收藏重要文件具体操作
- 如何利用Java-JACOB操作WORD文档
- 如何利用python dbus来发送一个信号
- 如何完成.Net下XML文档的读写操作
- 如何利用C#代码来进行操作AD