一、什么是验签:

用非常简单的话来描述:有一个发送消息的端 A 有一个接收消息的端B ,以及A发给B的信息 msg,发送过程要进行签名(类似于对数据加密成一个sign)A对发送的msg进行加密签名,随请求发送一个signB接收消息,要对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这个数据里面去,发起请求


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


©著作权归作者所有:来自51CTO博客作者柠檬阿南的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. 前端教程分享:HTTP请求Content-Type你知道是做什么的吗?
  2. 打开API网关设计的一扇窗
  3. Django 中间件
  4. Sentinel: 分布式系统的流量防卫兵
  5. 【小白笔记】Elastic Search使用Rest风格请求的CRUD
  6. 炫酷,SpringBoot+Echarts实现用户访问地图可视化(附源码)
  7. Spring MVC请求与响应
  8. 坚果云企业网盘安全性怎么样?
  9. jQuery中的$.ajax方法,以及基本的vue指令操作

随机推荐

  1. Android(安卓)Studio 上如何使用LogCat
  2. Android(安卓)删除sdcard目录中的某些目
  3. unity3d连接Sqlite并打包发布Android
  4. Android(安卓)APP启动过程中应用代码的加
  5. Android实现网易新闻客户端侧滑菜单(二)
  6. Android(安卓)GPS定位及实例
  7. Android应用程序的基本组件之Activity
  8. android布局tips,基础知识搜集
  9. coco2dx编译到android出现please define
  10. Android截屏分享