接口自动化中如何完成接口加密与解密?

加密是一种限制对网络上传输数据的访问权的技术。将密文还原为原始明文的过程称为解密,它是加密的反向处理。在接口开发中使用加密、解密技术,可以防止机密数据被泄露或篡改。在接口自动化测试过程中,如果要验证加密接口响应值正确性的话,就必须使用正确的解密方式先对其实现解密,再完成验证。

解决方案

通用加密算法

场景:了解数据使用的通用加密算法,例如 base64。
解决方案:使用通用的解密算法在获取加密响应信息后,对数据进行解密操作。

研发提供加解密 lib

场景:不了解对应的加密算法。
解决方案:需要研发提供加解密对应的 lib 包,完成数据解密。

提供远程解析服务

场景:既不是通用加密算法,研发也无法提供 lib 包。
解决方案:需要加密方提供远程解析服务,这样既解决了加解密问题,研发方也无需担心加解密算法暴露的问题。

实战练习

接下来对 httpbin 服务发起一个 base64 加密后的数据信息,httpbin 服务会将此加密数据再次返回,通过这个方式,模拟一个加密后的响应数据。

针对加密后的响应数据,在断言之前将其解析,获取到正常的数据再进行断言。

Python 版本

import requestsimport base64# 加密secret_msg = base64.b64encode("华测教育".encode('utf-8'))def test_send(): url = "https://httpbin.ceshiren.com/post" data = {"msg": secret_msg} # 发送接口请求 res = requests.post(url, data=data) # 获取加密的响应数据 msg = res.json()["form"]["msg"] # 对获取的加密数据进行解密 encoded_str = base64.b64decode(msg).decode('utf-8') assert encoded_str == "华测教育"

Java 版本

import org.apache.commons.codec.binary.Base64;import org.junit.jupiter.api.Test;import java.io.IOException;import java.util.LinkedHashMap;import static io.restassured.RestAssured.given;public class SendTest { // 加密一串数据 String secretMsg = Base64.encodeBase64String("hogwarts".getBytes()); @Test void send() throws IOException { // 发起请求,并获取响应信息 LinkedHashMap<String, String> responseForm = given(). formParam("msg", secretMsg). when(). post("https://httpbin.ceshiren.com/post"). then().extract().path("form"); // 获取加密后的响应信息,为二进制数组格式 byte[] base64Msg = Base64.decodeBase64(secretMsg); // 将数据格式转码为String类型,即可得到正常的返回值 String msg = new String(base64Msg, "utf-8"); assert msg.equals("hogwarts"); } }

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你! 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

temu跨境电商怎么样?做temu蓝海项目有哪些优势?

在全球电商市场激烈的竞争中&#xff0c;Temu跨境电商平台以其独特的优势和策略&#xff0c;逐渐崭露头角。对于许多想要拓展海外市场的商家来说&#xff0c;Temu的蓝海项目提供了一个充满机遇的新平台。本文将深入探讨Temu跨境电商的优势以及在蓝海市场中的发展前景。 全球化市…

SpringBoot的自动装配原理

一、SpringBootConfiguration注解的作用 SpringBootApplication注解是SpringBoot项目的核心注解,加在启动引导类上。点击进去可以发现SpringBootApplication注解是一个组合注解。其中SpringBootConfiguration和EnableAutoConfiguration是由Spring提供的,剩下的注解是由JDK提供的…

牛客BC52 判断整数奇偶性(C语言)

#include <stdio.h> int main() {int a;while ((scanf("%d", &a)) ! EOF){ if (a%20)printf("Even\n");elseprintf("Odd\n");}return 0; }

跨平台Recorder录音插件:支持多种格式、音频可视化、实时上传、语音识别

视频教程地址&#xff1a;【跨平台Recorder录音插件&#xff1a;支持多种格式、音频可视化、实时上传、语音识别】 https://www.bilibili.com/video/BV1jQ4y1c7e4/?share_sourcecopy_web&vd_sourcee66c0e33402a09ca7ae1f0ed3d5ecf7c /** 先引入Recorder &#xff08; 需先…

Programming Abstractions in C阅读笔记:p254-p257

《Programming Abstractions in C》学习第70天&#xff0c;p254-p257总结&#xff0c;总计4页。 一、技术总结 1.minimax strategy(极小化极大算法) p255, This idea–finding the position that leaves your opponent with the worst possible best move–is called the mi…

MiniTab的单值的变量控制图——I-MR 控制图分析

单值的变量控制图分为&#xff1a;I-MR 控制图、Z-MR 控制图、单值控制图、移动极差控制图4种。 I-MR 控制图 功能菜单请选择&#xff1a;统计>控制图>单值的变量控制图>I-MR。 使用 I-MR 控制图 可以在拥有连续数据且这些数据是不属于子组的单个观测值的情况下监视…

Supervised Contrastive 损失函数详解

有什么不对的及时指出&#xff0c;共同学习进步。(●’◡’●) 有监督对比学习将自监督批量对比方法扩展到完全监督设置&#xff0c;能够有效地利用标签信息。属于同一类的点簇在嵌入空间中被拉到一起&#xff0c;同时将来自不同类的样本簇推开。这种损失显示出对自然损坏很稳…

专业远程控制软件有哪些品牌

远程办公、远程控制类的软件很多&#xff0c;主打方向和面向的客户人群也不一样。个人用户可能更在意便捷、免费等因素&#xff1b;专业用户会更注重安全性、管理功能等。今天我们介绍几个在全球知名的专业商业远程软件。 1、TeamViewer 简介&#xff1a;TeamViewer &#xf…

EXCEL VBA调用adobe的api识别电子PDF发票里内容并登记台账

EXCEL VBA调用adobe的api识别电子PDF发票里内容并登记台账 代码如下 使用须知&#xff1a; 1、工具--引用里勾选[Adobe Acrobat 10.0 Type Library] 2、安装Adobe Acrobat pro软件Dim sht As Worksheet Function BrowseFolders() As String 浏览目录Dim objshell As ObjectDim…

暗藏危险,警惕钓鱼邮件!

叮 您有一份福利待查收 您的信息资产需要排查 您的账户异常需要验证 这些看似“重要”的邮件 都藏着攻击者的恶意嘴脸 随着网络安全防护和建设的重要性日益凸显&#xff0c;国家安全、企业安全、合规需求及业务驱动等各个方面都亟需将网络安全作为基石。在企业业务转型发展…

【C++中STL】stack和queue容器

stack和queue stack基本概念常用接口 quque基本概念常用接口 stack 基本概念 stack是一种先进后出的数据结构&#xff0c;它只有一个出口 栈中只有顶端的元素可以被外界使用&#xff0c;因此栈不允许由遍历行为 可以判断是否为空empty(),和统计个数size(); 常用接口 1、st…

服务器是什么?(四种服务器类型)

服务器 服务器定义广义: 专门给其他机器提供服务的计算机。狭义:一台高性能的计算机&#xff0c;通过网络提供外部计算机一些业务服务 个人PC内存大概8G&#xff0c;服务器内存128G起步 服务器是什么 服务器指的是 网络中能对其他机器提供某些服务的计算机系统 &#xff0c;相对…

用Yara对红队工具“打标”

前言: YARA 通常是帮助恶意软件研究人员识别和分类恶意软件样本的工具&#xff0c;它基于文本或二进制模式创建恶意样本的描述规则&#xff0c;每个规则由一组字符串和一个布尔表达式组成&#xff0c;这些表达式决定了它的逻辑。 但是这次我们尝试使用 YARA 作为一种扫描工具…

【好书推荐-第五期】《互联网大厂推荐算法实战》(异步图书出品)

&#x1f60e; 作者介绍&#xff1a;我是程序员洲洲&#xff0c;一个热爱写作的非著名程序员。CSDN全栈优质领域创作者、华为云博客社区云享专家、阿里云博客社区专家博主、前后端开发、人工智能研究生。公粽号&#xff1a;程序员洲洲。 &#x1f388; 本文专栏&#xff1a;本文…

机器学习 | 深入探索Numpy的高性能计算能力

目录 初识numpy numpy基本操作 数组的基本操作 ndarray运算 数组间运算 矩阵 初识numpy Numpy&#xff08;Numerical Python&#xff09;是一个开源的Python科学计算库&#xff0c;用于快速处理任意维度的数组。Numpy支持常见的数组和矩阵操作。对于同样的数值计算任务&…

k8s 进阶实战笔记 | Pod 创建过程详解

Pod 创建过程详解 ​ 初始状态0 controller-manager、scheduler、kubelet组件通过 list-watch 机制与 api-server 通信并检查资源变化 第一步 用户通过 CLI 或者 WEB 端等方式向 api-server 发送创建资源的请求&#xff08;比如&#xff1a;我要创建一个replicaset资源&…

Hadoop3.x源码解析

文章目录 一、RPC通信原理解析1、概要2、代码demo 二、NameNode启动源码解析1、概述2、启动9870端口服务3、加载镜像文件和编辑日志4、初始化NN的RPC服务端5、NN启动资源检查6、NN对心跳超时判断7、安全模式 三、DataNode启动源码解析1、概述2、初始化DataXceiverServer3、初始…

聚道云软件连接器:打通金蝶云星空与招商银行CBS,提升企业财务和银行业务效率

【客户介绍】 某企业是一家从事电子商务的企业&#xff0c;随着业务的不断扩大&#xff0c;对于财务管理和银行业务的需求也越来越高。该企业希望能够实现财务和银行业务的自动化处理&#xff0c;提高工作效率。由于业务的不断发展&#xff0c;企业面临着越来越多的资金管理挑…

零基础学习数学建模——(四)备战美赛

本篇博客将讲解如何备战美赛。 什么是美赛 美赛&#xff0c;全称是美国大学生数学建模竞赛&#xff08;MCM/ICM&#xff09;&#xff0c;由美国数学及其应用联合会主办&#xff0c;是最高的国际性数学建模竞赛&#xff0c;也是世界范围内最具影响力的数学建模竞赛。 赛题内容…

Oracle触发器简单应用示例(销售与库存)

目录 一、应用描述 1、应用场景&#xff1a; 2、具体场景&#xff1a; 二、表结构介绍 1、表名介绍&#xff1a; 2、表结构&#xff1a; 三、设置触发器 四、运行示例 1、初始库存描述 2、有库存情况 2.1 1001号产品售出1件 2.2 1001号产品库存已减1 3、无库存情况…