当前位置: 首页 > news >正文

随记-探究 OpenApi 的加密方式

open api 主要参数如下

  • appKey 接口Key(app id)
  • appSecret 接口密钥
  • timeStamp 时间戳 毫秒
  • nonceStr 随机字符串
  • signature 加密字符串

客户端

  • 使用 appSecret 按照一定规则将 appKey timeStamp nonceStr 进行加密,得到密文 signature
  • 将 appKey timeStamp nonceStr 和 signature 一起上传

浅析

  • timeStamp 规定一个时间段,比如十分钟,防止暴力破解
  • nonceStr,防止冲重放攻击,需要服务端记录,并保证一段时间内不能再次使用

服务端

  • 根据 appKey 从数据库获取 appSecret
  • 按照和客户端相同的规则进行加密,得到密文,对比密文

小结

  • 客户端和服务端的加密方法相同
  • 本质上属于对称加密
  • 需要用户保管好密钥
import hashlibclass SignUtil(object):@staticmethoddef create_sign(app_secret, **kwargs):temp_list = []for key, value in kwargs.items():if value not in (None, "") and key != "sign" and key != "key":temp_list.append(f"{key}={value}")temp_list.append(f"key={app_secret}")temp_str = ("&".join(temp_list)) .encode()sign = hashlib.md5(temp_str).hexdigest().upper()return signif __name__ == "__main__":# 用户端发起请求,生成签名后发送请求appSecret = "7214fefff0cf47d7950cb2fc3b5d670a"appId = "wx123456789"timestamp = "1583332804914"# 生成签名sorted_dict = {"appId":appId, "timestamp":timestamp,}signature = SignUtil.create_sign(appSecret, appId=appId, timestamp=timestamp)print("签名:"+ signature )

到此结  DragonFangQy 2023.12.20

http://www.lryc.cn/news/264120.html

相关文章:

  • stm32学习总结:4、Proteus8+STM32CubeMX+MDK仿真串口收发
  • 配置paddleocr及paddlepaddle解决报错 GLIBCXX_3.4.30 FreeTypeFont
  • 【实战】如何在Docker Image中轻松运行MySQL
  • PLC物联网,实现工厂设备数据采集
  • npm安装依赖报错ERESOLVE unable to resolve dependency tree(我是在taro项目中)(node、npm 版本问题)
  • Maven仓库上传jar和mvn命令汇总
  • Jenkins 执行远程脚本的插件—SSH2 Easy
  • Starting the Docker Engine...一直转圈
  • 关于Python里xlwings库对Excel表格的操作(十五)
  • [Linux] LVS+Keepalived高可用集群部署
  • 【版本管理】git stash用法
  • 声明式的理解【gpt】
  • 提高Spring Boot技能的9种方法
  • HIVE基本操作
  • 【经典LeetCode算法题目专栏分类】【第5期】贪心算法:分发饼干、跳跃游戏、模拟行走机器人
  • 【大数据面试】MapReduce常见问题与答案
  • 数组深入学习感悟
  • 亚马逊云科技-如何缩容/减小您的AWS EC2根卷大小-简明教程
  • [Java 基础] Java Stream
  • 达芬奇18.6DaVinci ResolveStudio(Win/Mac)激活版
  • 力扣题目学习笔记(OC + Swift)16. 最接近的三数之和
  • 基于STM32的DHT11温湿度传感器与LCD显示器的集成设计
  • 解决浏览器自动将http跳转至https导致无法访问的问题
  • 小程序面试题 | 07.精选小程序面试题
  • 深度学习的推理部分
  • 如何用 CleanMyMac 来保护 Mac 隐私
  • opencv入门到精通——鼠标事件和Trackbar控件的使用
  • iOS 收集 SDK 内部 log
  • 【CSS @property】CSS自定义属性说明与demo
  • 【华为数据之道学习笔记】6-3数据服务分类与建设规范