接口测试必备技能 - 加密和签名
1、什么是加密以及解密?
加密:在网络上传输的原始数据(明文)经过加密后形成(密文)传输,防止被窃取。
解密:将加密还原成原始数据
2、加密方式分类?
对称式加密:对加密和解密使用的是同一个密钥
非对称式加密:非对称式加密需要两个密钥(双钥),分别叫公钥和秘钥,这两把秘钥可以互相加解密,公钥公开的,不需要保密,私钥是保密的。
01
加密方式详解
1、加对称密技术:
DES加密算法:加密安全性弱,一般应用于旧的系统里面
AES加密算法:一般用于前后端分离的接口加密
Base64加密算法:编码的方式
2、非对称加密技术(RSA加密算法)
RSA加密算法:最有影响力的加密算法
场景1:通过公钥加密
通过私钥解密
两个用户。A和B,B有双钥,A想要把一个数据报文通过加密的方式传给B。
① B把自己的公钥发送给A(公钥是公开的)
② A使用这个公钥把数据报文进行加密,加密完成传给B(加密后的密文通过网络传给B)
③ B使用自己的秘钥解密得到数据报文
场景2:私钥加密:数字签名
公钥解密:验证签名
数字证书由来:因为公钥是公开的不安全,所以需要第三方的CA(数字证书颁发机构)对公钥进行加密,加密后的东西就叫数字证书。数字证书包括:B用户基本信息以及B公钥的信息,部分证书也附有有效期。X509的标准
CA:双钥,通过私钥加密
验证签名:身份验证。
两个用户。A和B,B有双钥
① B把需要发送的数据报文通过私钥加密。
② B找到CA把自己的公钥做认证
③ CA就用自己的私钥对B的公钥和一些相关的信息一起加密,生成数字证书
④ CA就会把数字证书发给B
⑤ B将密文和数字证书都传给A
⑥ A用CA的公钥去解开数字证书,拿到B的公钥,在使用公钥解密密文,从而得到数据报文
Fiddler不能直接抓取https协议的数据报文,需要安装一个数字证书
https协议=http协议+SSL安全传输协议
SSL安全传输协议:安全套接层。
NetScape(B)研发,Fiddler(A),CA把数字证书发到网上,数字证书生成器。
3、MD5(完全不考虑解密,也叫做哈希算法,散列算法)
Postman举例:在Tests中
//获得当前时间戳
new times = new Date().getTime()
//使用MD5加密
var miwen =
CryptoJS.MD5(“admin”).toString().toUpperCase()
Jmeter
函数助手:__digest
${__digest(MD5.admin,)}
02
接口签名
1、什么是接口签名?
使用用户名,密码,时间戳和所有的排序过的参数组合起来,再加密得到的字符串,字符串是唯一的有权访问第三方金融接口的鉴权码=sign接口签名。
2、为什么要做接口签名?
防伪装攻击
防篡改攻击
防存放攻击
防数据泄漏
3、如何做接口签名,了解签名的规则:
对所有的请求的参数按key按ASCII码做升序排列。
{“c”:“3”,“b”:“2”,“a”:“1”}
{“1”:“1”,“b”:“2”,“c”:“3”}
把参数名和参数值连接成字符串:
a=1&b=2&c=3
用申请到的appid和appsecret连接到字符串的头部
appid:用户名
appsecret:密码
appid=admin&appsecret=123&a=1&b=2&c=3
appid=admin&appsecret=123&a=1&b=2&c=3×tamp=124124252
然后再把这个字符串安装32位的MD5加密,加密后再转换成大写。
sign=E48B34F95AE8001C99CB86A612538C04
10秒有效。
jmeter实现并且分装成函数的话:自定义函数 jave python
4、postman实现并且封装成函数:JavaScript
Pre-request-Script
//url=https://aaa/sss?com=aaa&nu=hhh&phone=jjjjj&show_appid=jj&showapi_timestamp={{time}}&showapi_sign={{sign}}
var moment = require(‘moment’)//获取时间戳
console.log(request.url);//获取请求信息
var url = request.url;
var param = url.split(“?”)[1]//取到url的?后面的值,按照?分割,取前面就是0
if(param != null)
{
{
var time = moment().format(“YYYYMMDDHHmmss”)//取当天时间按照YYYYMMDDHHmmss形式显示
pm.environment.set(“time”,time);//postman 自带的 全局变量
param+="&showapi_timestamp="+time;
param+="&showapi_sign=122344556";var param = param.split("&") ;//分割变成一个list
param.sort();//按照要求的方式进行排序a-z
var keys = new Array(param.length);
var values = new Array(param.length);
for(var i=0;i<param.length;i++)
{keys[i]=param[i].split("=")[0]//取=前面的值values[i]=param[i].split("=")[1]//取=后面的值
}
var str=[]
for(var p=0;p<keys.length;p++)//如果发现keys需要sign,就不参与验签
{if (keys[p]=="showapi_sign"||values[p]=="{{time}}"){continue;}str.push(keys[p]+value[p]);
}
var sign = str.join("")
sign = sign+"sssss";//加密钥
pm.environment.set("sign",CryptoJs.MD5(sign).toString());//postman 自带的全局变量}
相关文章:
接口测试必备技能 - 加密和签名
1、什么是加密以及解密? 加密:在网络上传输的原始数据(明文)经过加密后形成(密文)传输,防止被窃取。 解密:将加密还原成原始数据 2、加密方式分类? 对称式加密…...
JVM虚拟机概述(1)
1.JVM概述 1.1为什么要学习JVM 通过学习JVM ( java Virtual Machine )可以帮助我们理解java程序运行的过程,了解虚拟机中各种机制的实现原理。为后期写出优质的代码做好准备,为向更高的层次提升打好基础。 1.2虚拟机 虚拟机的本质就是在windows中&…...
学习.NET MAUI Blazor(七)、实现一个真正的ChatGPT聊天应用
今天在新闻上看到一条消息,OpenAI已经开放了ChatGPT的接口,也就是GPT-3.5,对比原来的GPT-3,增加了gpt-3.5-turbo、gpt-3.5-turbo-0301两个模型。 gpt-3.5-turbo:使用最新的GPT-3.5模型,并针对聊天进行了优…...
Django框架学习
文章目录Django框架项目开发1. 创建项目2. 项目目录结构3. 视图函数(view)4. 路由配置url5. HTTP请求6. HTTP响应 - 状态吗7. GET方式传参8. POST传递参数模板Templates1. 通过 loader 获取模板,通过HttpResponse进行响应2. 使用 render() 直接加载并响应…...
JavaSE21-集合1-set
文章目录一、集合概念二、set集合1、set集合的特点2、HashSet2.1 特点2.2 创建对象2.3 常用方法2.4 遍历2.4.1 foreach遍历2.4.2 使用迭代器遍历2.4.3 转换为数组遍历一、集合概念 集合就是用于存储多个数据的容器。相对于具有相同功能的数组来说,集合的长度可变会…...
Web版和客户端哪种SQL工具更好?ChatGPT有话要说
2023年年初公司发布了一款Web版SQL工具,短期内就赢得了众多用户的喜爱和下载。不过,也有SQL用户在评论区中提出自己的观点,认为Web版工具都不可靠,甚至看见Web版工具就劝返… … 工具Web化逐渐成为一种趋势,比如&…...
从客户端的角度来看移动端IM即时通讯的消息可靠性和送达机制
如何确保IM 不丢消息是个相对复杂的话题,从客户端发送数据到服务器,再从服务器抵达目标客户端,最终在 UI 成功展示,其间涉及的环节很多,这里只取其中一环「接收端如何确保消息不丢失」来探讨,粗略聊下我接触…...
2023年java春招面试题及答案
2023年java春招面试题1、下面有关jdbc statement的说法错误的是?2、下面有关JVM内存,说法错误的是?3、下面有关servlet service描述错误的是?4、下面有关servlet和cgi的描述,说法错误的是?5、下面有关SPRIN…...
Django学习——基础篇(上)
一、Django的安装 pip install djangopython目录下出现两个文件 djando-admin.exe django django-admin.exe django 二、创建项目 1.命令行(终端) 1.打开终端 winR 输入cmd 2.进入项目目录 3.执行命令创建项目 2.Pycharm 两种方法对比 1.命令行创…...
研报精选230302
目录 【个股230302华西证券_比亚迪】系列点评五十四:迪“王”需求向上 出口“海”阔天空【个股230302华西证券_华利集团】下游去库存背景下承压,毛利率保持稳健【个股230302开源证券_恒顺醋业】公司信息更新报告:四季度业绩承压,期…...
Unity心得
- 将结果与因子颠倒的函数Mathf.InverseLerp非常实用 - at 10 meters, you want volume 1 - at 20 meters, you want volume 0 - volume InvLerp( 20, 10, distance ) - 显示HideFlags为Hide类型的物体 Resources .FindObjectsOf…...
TryHackMe-Binex
Binex 枚举计算机并获取交互式 shell。利用 SUID 位文件,使用 GNU 调试器利用缓冲区溢出并通过 PATH 操作获得根访问权限。 端口扫描 循例 nmap SMB枚举 题目给了提示:Hint 1: RID range 1000-1003 Hint 2: The longest username has the unsecure pa…...
外贸人如何写出优秀的开发信?附详细思路
如何写出优秀的开发信?最近做出口生意的客户都在抱怨,开发信的回复率越来越低,其实原因有很多,有时候并非自己的能力实在很欠缺。原因总结如图:第一:市场不景气这个就是就属于客观因素了,这也许…...
python自学之《21天学通Python》(18)——第21章 案例2 Python搞定大数据
“大数据(Big Data)”这个术语最早期的引用可追溯到apache org的开源项目Nutch。当时,大数据用来描述为更新网络搜索索引需要同时进行批量处理或分析的大量数据集。随着谷歌MapReduce和GoogleFileSystem (GFS)的发布&a…...
面试问题【数据库】
数据库数据库的三范式是什么drop、delete、truncate 分别在什么场景之下使用char 和 varchar 的区别是什么数据库的乐观锁和悲观锁是什么SQL 约束有哪几种mysql 的内连接、左连接、右连接有什么区别MyIASM和Innodb两种引擎所使用的索引的数据结构是什么mysql 有关权限的表都有哪…...
Allegro如何输出钻孔表操作指导
Allegro如何输出钻孔表操作指导 用Allegro做PCB设计的时候,需要输出钻孔表格,用于生产加工,如下图 如何输出钻孔表,具体操作如下 点击Manufacture点击NC...
消息队列 面试题 整理
消息队列 为什么要使用消息队列? 异步解耦:关注的是通知而非处理。 流量削峰:将短时间内高并发的请求持久化,然后逐步处理,削平高峰期的请求。 日志收集: 事务最终一致性 系统间的消息通信方式ÿ…...
【Java】对象比较大小
在Java中经常会涉及到对象数组的排序问题,那么就涉及到对象之间的比较问题。Java实现对象排序的方式有两种: 自然排序:java.lang.Comparable定制排序:java.util.Comparator 规则:需要我们自定义根据对象的某个或某些属…...
发票自动OCR识别并录入模板 3分钟免费配置
要问整个公司里和数据打交道最多的职能,非财务莫属了吧。除了每天要处理大量财务数据外,还有发票录入的工作让财务陷入“易燃易爆炸”的工作状态。发票报销看似简单,但发票的类型有很多种,每种发票需要录入的信息也有差别。再加上…...
Dubbo 配置说明
dubbo:scan:base-packages: com.ut.msdasw.services.appservice //这个会扫描该包下得全部接口protocol: //这个主要是配置传输的协议和端口,只是一个协议name: dubbo port: 30032registry: //这里是服务注册中心的地址address: spring-cloud://localhost consum…...
React 第五十五节 Router 中 useAsyncError的使用详解
前言 useAsyncError 是 React Router v6.4 引入的一个钩子,用于处理异步操作(如数据加载)中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误:捕获在 loader 或 action 中发生的异步错误替…...
SkyWalking 10.2.0 SWCK 配置过程
SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外,K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案,全安装在K8S群集中。 具体可参…...
在rocky linux 9.5上在线安装 docker
前面是指南,后面是日志 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce docker-ce-cli containerd.io -y docker version sudo systemctl start docker sudo systemctl status docker …...
PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建
制造业采购供应链管理是企业运营的核心环节,供应链协同管理在供应链上下游企业之间建立紧密的合作关系,通过信息共享、资源整合、业务协同等方式,实现供应链的全面管理和优化,提高供应链的效率和透明度,降低供应链的成…...
【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表
1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...
【项目实战】通过多模态+LangGraph实现PPT生成助手
PPT自动生成系统 基于LangGraph的PPT自动生成系统,可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析:自动解析Markdown文档结构PPT模板分析:分析PPT模板的布局和风格智能布局决策:匹配内容与合适的PPT布局自动…...
ArcGIS Pro制作水平横向图例+多级标注
今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作:ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等(ArcGIS出图图例8大技巧),那这次我们看看ArcGIS Pro如何更加快捷的操作。…...
Selenium常用函数介绍
目录 一,元素定位 1.1 cssSeector 1.2 xpath 二,操作测试对象 三,窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四,弹窗 五,等待 六,导航 七,文件上传 …...
如何更改默认 Crontab 编辑器 ?
在 Linux 领域中,crontab 是您可能经常遇到的一个术语。这个实用程序在类 unix 操作系统上可用,用于调度在预定义时间和间隔自动执行的任务。这对管理员和高级用户非常有益,允许他们自动执行各种系统任务。 编辑 Crontab 文件通常使用文本编…...
搭建DNS域名解析服务器(正向解析资源文件)
正向解析资源文件 1)准备工作 服务端及客户端都关闭安全软件 [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# setenforce 0 2)服务端安装软件:bind 1.配置yum源 [rootlocalhost ~]# cat /etc/yum.repos.d/base.repo [Base…...
