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

2023-10-12 16:15

本文主要是介绍资深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性能测试

请添加图片描述

九、总结(尾部小惊喜)

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

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

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

这篇关于资深8年测试整理,接口测试必备-加密与签名,让你不再走弯路...的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/196989

相关文章

性能测试介绍

性能测试是一种测试方法,旨在评估系统、应用程序或组件在现实场景中的性能表现和可靠性。它通常用于衡量系统在不同负载条件下的响应时间、吞吐量、资源利用率、稳定性和可扩展性等关键指标。 为什么要进行性能测试 通过性能测试,可以确定系统是否能够满足预期的性能要求,找出性能瓶颈和潜在的问题,并进行优化和调整。 发现性能瓶颈:性能测试可以帮助发现系统的性能瓶颈,即系统在高负载或高并发情况下可能出现的问题

字节面试 | 如何测试RocketMQ、RocketMQ?

字节面试:RocketMQ是怎么测试的呢? 答: 首先保证消息的消费正确、设计逆向用例,在验证消息内容为空等情况时的消费正确性; 推送大批量MQ,通过Admin控制台查看MQ消费的情况,是否出现消费假死、TPS是否正常等等问题。(上述都是临场发挥,但是RocketMQ真正的测试点,还真的需要探讨) 01 先了解RocketMQ 作为测试也是要简单了解RocketMQ。简单来说,就是一个分

【测试】输入正确用户名和密码,点击登录没有响应的可能性原因

目录 一、前端问题 1. 界面交互问题 2. 输入数据校验问题 二、网络问题 1. 网络连接中断 2. 代理设置问题 三、后端问题 1. 服务器故障 2. 数据库问题 3. 权限问题: 四、其他问题 1. 缓存问题 2. 第三方服务问题 3. 配置问题 一、前端问题 1. 界面交互问题 登录按钮的点击事件未正确绑定,导致点击后无法触发登录操作。 页面可能存在

业务中14个需要进行A/B测试的时刻[信息图]

在本指南中,我们将全面了解有关 A/B测试 的所有内容。 我们将介绍不同类型的A/B测试,如何有效地规划和启动测试,如何评估测试是否成功,您应该关注哪些指标,多年来我们发现的常见错误等等。 什么是A/B测试? A/B测试(有时称为“分割测试”)是一种实验类型,其中您创建两种或多种内容变体——如登录页面、电子邮件或广告——并将它们显示给不同的受众群体,以查看哪一种效果最好。 本质上,A/B测

数论入门整理(updating)

一、gcd lcm 基础中的基础,一般用来处理计算第一步什么的,分数化简之类。 LL gcd(LL a, LL b) { return b ? gcd(b, a % b) : a; } <pre name="code" class="cpp">LL lcm(LL a, LL b){LL c = gcd(a, b);return a / c * b;} 例题:

负债不再是障碍?银行信贷“白名单“揭秘

谈及银行信贷产品,常闻有言称存在无需考量负债与查询记录之奇品,此等说法十有八九为中介诱人上钩之辞。轻信之下,恐将步入连环陷阱。除非个人资质出类拔萃,如就职于国央企或事业单位,工龄逾年,五险一金完备,还款能力卓越,或能偶遇线下产品对查询记录稍显宽容,然亦非全然无视。宣称全然不顾者,纯属无稽之谈。 银行非慈善机构,不轻易于困境中援手,更偏爱锦上添花之举。若无坚实资质,即便求助于银行亦难获青睐。反

Java 后端接口入参 - 联合前端VUE 使用AES完成入参出参加密解密

加密效果: 解密后的数据就是正常数据: 后端:使用的是spring-cloud框架,在gateway模块进行操作 <dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>30.0-jre</version></dependency> 编写一个AES加密

rtmp流媒体编程相关整理2013(crtmpserver,rtmpdump,x264,faac)

转自:http://blog.163.com/zhujiatc@126/blog/static/1834638201392335213119/ 相关资料在线版(不定时更新,其实也不会很多,也许一两个月也不会改) http://www.zhujiatc.esy.es/crtmpserver/index.htm 去年在这进行rtmp相关整理,其实内容早有了,只是整理一下看着方

笔记整理—内核!启动!—kernel部分(2)从汇编阶段到start_kernel

kernel起始与ENTRY(stext),和uboot一样,都是从汇编阶段开始的,因为对于kernel而言,还没进行栈的维护,所以无法使用c语言。_HEAD定义了后面代码属于段名为.head .text的段。         内核起始部分代码被解压代码调用,前面关于uboot的文章中有提到过(eg:zImage)。uboot启动是无条件的,只要代码的位置对,上电就工作,kern

java线程深度解析(一)——java new 接口?匿名内部类给你答案

http://blog.csdn.net/daybreak1209/article/details/51305477 一、内部类 1、内部类初识 一般,一个类里主要包含类的方法和属性,但在Java中还提出在类中继续定义类(内部类)的概念。 内部类的定义:类的内部定义类 先来看一个实例 [html]  view plain copy pu