资深8年测试整理,接口测试必备-加密与签名,让你不再走弯路...

目录:导读

    • 前言
    • 一、Python编程入门到精通
    • 二、接口自动化项目实战
    • 三、Web自动化项目实战
    • 四、App自动化项目实战
    • 五、一线大厂简历
    • 六、测试开发DevOps体系
    • 七、常用自动化测试工具
    • 八、JMeter性能测试
    • 九、总结(尾部小惊喜)


前言

1、接口加密解密

1)什么是加密以及解密?

加密:在网络上传输的原始数据(明文)经过加密后形成(密文)传输,防止被窃取。

解密:将加密还原成原始数据

2)加密方式分类?

对称式加密:对加密和解密使用的是同一个密钥

非对称式加密:非对称式加密需要两个密钥(双钥),分别叫公钥和秘钥,这两把秘钥可以互相加解密,公钥公开的,不需要保密,私钥是保密的。

2、加密方式

1)加对称密技术

DES加密算法:加密安全性弱,一般应用于旧的系统里面
AES加密算法:一般用于前后端分离的接口加密
Base64加密算法:编码的方式

2)非对称加密技术(RSA加密算法)

RSA加密算法:最有影响力的加密算法

场景一:
通过公钥加密
通过私钥解密

两个用户。A和B,B有双钥,A想要把一个数据报文通过加密的方式传给B。

① B把自己的公钥发送给A(公钥是公开的)
② A使用这个公钥把数据报文进行加密,加密完成传给B(加密后的密文通过网络传给B)
③ B使用自己的秘钥解密得到数据报文

场景二:
私钥加密:数字签名
公钥解密:验证签名

数字证书由来:因为公钥是公开的不安全,所以需要第三方的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,,,)}

3、接口签名

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&timestamp=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的?后面的值,按照?分割,取前面就是0if(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("&") ;//分割变成一个listparam.sort();//按照要求的方式进行排序a-zvar 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 自带的全局变量}
下面是我整理的2023年最全的软件测试工程师学习知识架构体系图

一、Python编程入门到精通

请添加图片描述

二、接口自动化项目实战

请添加图片描述

三、Web自动化项目实战

请添加图片描述

四、App自动化项目实战

请添加图片描述

五、一线大厂简历

请添加图片描述

六、测试开发DevOps体系

请添加图片描述

七、常用自动化测试工具

请添加图片描述

八、JMeter性能测试

请添加图片描述

九、总结(尾部小惊喜)

每一个成功的人都曾历经挫折与失败,但他们不放弃,一次次地爬起来,坚定前行。在通往梦想的路上,要有勇气和决心,用热血和汗水创造属于自己的辉煌!

在茫茫人海中,只有敢于坚持梦想、勇于追求的人才能书写属于自己的传世之作。不畏艰辛,放飞心灵的翅膀,奋斗不息,绽放绚烂的人生华章!

只要你相信自己的力量,勇往直前,坚持不懈,没有什么是不能达成的。在奋斗的道路上,努力成就辉煌,让梦想化作燃烧的火焰,点亮未来的星空!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/155850.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Avalonia常用小控件Menu

1.项目下载地址&#xff1a;https://gitee.com/confusedkitten/avalonia-demo 2.UI库Semi.Avalonia&#xff0c;项目地址 https://github.com/irihitech/Semi.Avalonia 样式预览&#xff1a; axaml代码 &#xff1a; <UserControl xmlns"https://github.com/avalo…

DAZ To UMA⭐五.模型在Blender中的配置教程

文章目录 🟥 创建符合UMA的材质球属性1️⃣ 合并材质球🎁 选择材质球🎁 合并材质球🎁 删除多余材质球2️⃣ 将身体按材质球拆分🎁 进入身体编辑模式🎁 全选身体🎁 按材质分割身体🎁 重命名不同部位3️⃣ 将其余部位进行拆分🟧 更正选择缩放🟩 更新骨骼结构…

python opencv 深度学习 指纹识别算法实现 计算机竞赛

1 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; python opencv 深度学习 指纹识别算法实现 &#x1f947;学长这里给一个题目综合评分(每项满分5分) 难度系数&#xff1a;3分工作量&#xff1a;4分创新点&#xff1a;4分 该项目较为新颖…

数据治理的数字画像

随着全网步入大数据时代&#xff0c;企业的目光日益聚焦在利用大数据服务精细化营销、精细化运营上&#xff0c;各类客户画像、员工画像理论如雨后春笋般兴起&#xff0c;而数据应用的底层——数据治理&#xff0c;却鲜有整体的理论体系。如何避免治理工作自身“无的放矢”&…

GLB/GLTF在线纹理编辑

1、GLB/GLTF纹理介绍 GLB文件是将glTF文件及其所引用的资源文件&#xff08;如纹理、着色器等&#xff09;打包到一个二进制文件中。在GLB文件中&#xff0c;纹理数据可以通过嵌入式存储的方式进行存储。 GLB文件中的纹理数据包含了模型的材质信息和纹理图像数据。具体来说&a…

本地vscode安装GPU版本PyTorch

操作系统 windows, IDE环境vscode&#xff0c;本地GPU 可以新建一个jupyter文件&#xff0c;运行一些测试代码 确保装好显卡驱动 在底下调出终端窗口&#xff0c;默认是power shell&#xff0c;我喜欢用cmd窗口 激活自己的虚拟环境&#xff0c;输入命令 nvidia-smi 确保自己…

如何选择UMLChina服务

服务口号&#xff1a;聚焦最后一公里 斐力庇第斯从马拉松跑回雅典报信&#xff0c;虽然已是满身血迹、精疲力尽&#xff0c;但他知道&#xff1a;没有出现在雅典人民面前&#xff0c;前面的路程都是白费。 学到的知识如果不能最终【用】于您自己的项目之中&#xff0c;也同样是…

EDUSRC-记一个SHELL捡漏

目录 ​编辑 Jenkins - println绕过到shell命令执行 语法 Jenkins未授权访问(捡漏失败) Jenkins捡漏 弱口令 脚本执行(println失败) CHATGPT调教绕过 hack渗透视频教程&#xff0c;扫码免费领 Jenkins - println绕过到shell命令执行 语法 org"China Education and…

『Linux』GDB调试

前言 GDB 是由 GNU 软件系统社区提供的调试工具&#xff0c;同 GCC 配套组成了一套完整的开发环境&#xff0c;GDB 是 Linux 和许多类 Unix 系统中的标准开发环境。 一般来说&#xff0c;GDB 主要完成下面四个方面的功能&#xff1a; 启动程序&#xff1a;可以按照自定义的要求…

分布式数据库HBase(林子雨慕课课程)

文章目录 4. 分布式数据库HBase4.1 HBase简介4.2 HBase数据模型4.3 HBase的实现原理4.4 HBase运行机制4.5 HBase的应用方案4.6 HBase安装和编程实战 4. 分布式数据库HBase 4.1 HBase简介 HBase是BigTable的开源实现 对于网页搜索主要分为两个阶段 1.建立整个网页索引&#xf…

C语言中常用的字符串处理函数(strlen、strcpy、strcat、strcmp)

文章目录 写在前面1. strlen1.1 函数介绍1.2 模拟实现 2. strcpy2.1 函数介绍2.2 模拟实现 3. strcat3.1 函数介绍3.2 模拟实现 4. strcmp4.1 函数介绍4.2 模拟实现 写在前面 本篇文章介绍了C语言中常用的字符串处理函数&#xff0c;包括strlen、strcpy、strcat和strcmp。文章…

10-网络篇-DHCP获取的参数详解

一个设备接入路由器局域网时&#xff0c;是通过DHCP获取网络信息&#xff0c;从而完成网络配置的获取。如下图所示为windows系统通过DHCP所要获取的网络配置&#xff1a;IP、子网掩码、网关、DNS服务器。任何设备要上网前&#xff0c;都需要知道这几个参数&#xff0c;下面对这…

拼多多商品品牌数据采集接口,拼多多商品详情数据接口,拼多多API接口

拼多多商品品牌数据采集的方法如下&#xff1a; 手动数据采集。直接在拼多多平台上搜索并手动复制商品数据&#xff0c;适合采集小批量的商品数据。自动数据采集。通过爬虫来自动获取&#xff0c;具体步骤如下&#xff1a; 选择爬虫框架并安装。Python爬虫框架有很多&#xf…

13SpringMVC中拦截器的配置(拦截规则)和多个拦截器的preHandle,postHandle执行顺序原理详解

拦截器 Servlet中的过滤器的实现及其原理,参考文章 配置一个拦截器 SpringMVC中请求的处理流程: 用户请求—>listener—>filter—>DispatcherServlet—>filter—>preHandle—>controller—>postHandle 第一步: 编写一个Java类实现HandlerInterceptor(…

TCP/IP(五)TCP的连接管理(二)三次握手细节

一 ISN序列号探究 本文主要探究三次握手建立TCP连接的细节备注&#xff1a; 某些问题探究的比较深入,当前用不到,暂时通过链接引入进来吃水不忘挖井人&#xff1a; 小林 coding ① 初始序列号 ISN 是如何随机产生的 ISN: 初始化序列号 Initial Sequence Number 接收方和…

SQLAlchemy 使用封装实例

类封装 database.py #! /usr/bin/env python # -*- coding: utf-8 -*-import sys import json import logging from datetime import datetimefrom core.utils import classlock, parse_bool from core.config import (MYSQL_HOST,MYSQL_PORT,MYSQL_USER,MYSQL_PASS,MYSQL_DA…

CustomShapes/自定义形状, CustomCurves/自定义曲线, AnimateableData/数据变化动画 的使用

1. CustomShapes 自定义形状视图 1.1 资源图文件 therock.png 1.2 创建自定义形状视图 CustomShapesBootcamp.swift import SwiftUI/// 三角形 struct Triangle: Shape{func path(in rect: CGRect) -> Path {Path { path inpath.move(to: CGPoint(x: rect.midX, y: rect.mi…

Win10玩游戏老是弹回桌面的解决方法

在Win10电脑中&#xff0c;用户不仅可以办公&#xff0c;也可以畅玩各种各样的游戏。但是&#xff0c;有时候用户在玩游戏的时候&#xff0c;遇到了游戏老是自己弹回桌面的问题&#xff0c;这样是非常影响游戏体验的&#xff0c;却不清楚具体的解决方法。下面小编给大家带来了简…

二叉搜索树-- 删除节点-力扣 450 题

例题细节已经讲过&#xff08;二叉搜索树的基础操作-CSDN博客&#xff09;&#xff0c;用非递归和递归均可实现&#xff0c;这里只给出递归参考代码&#xff1a; public TreeNode deleteNode(TreeNode node, int key) {if (node null) {return null;}if (key < node.val) …

算法进阶——字符串的排列

题目 输入一个长度为 n 字符串&#xff0c;打印出该字符串中字符的所有排列&#xff0c;你可以以任意顺序返回这个字符串数组。 例如输入字符串ABC,则输出由字符A,B,C所能排列出来的所有字符串ABC,ACB,BAC,BCA,CBA和CAB。 数据范围&#xff1a;n<10 要求&#xff1a;空间复…