从入门到精通:接口自动化测试中加密、解密和Sign签名的完整指南

news2024/11/17 17:34:15

【专业解读】接口自动化测试安全机制剖析:加密、解密和sign签名技术原理与应用!

 

 

目录

摘要:

1. 加密

2. 解密

3. Sign签名

4. 示例


摘要:

在进行接口自动化测试时,加密、解密和sign签名是非常重要的步骤。这些过程可以保证传输的数据安全性,并防止恶意攻击。下面将介绍如何使用Python实现接口自动化测试中的加密、解密和sign签名。

1. 加密

在接口自动化测试中,需要对一些敏感数据进行加密处理,以保证数据的安全性。常用的加密算法有AES、DES、RSA等。下面是一个使用AES算法进行加密的示例代码:

import base64
from Crypto.Cipher import AES

# 设置加密密钥和向量
key = 'your_key'.encode('utf-8')
iv = 'your_iv'.encode('utf-8')

# 加密函数
def aes_encrypt(text):
    text = text.encode('utf-8')
    cipher = AES.new(key, AES.MODE_CBC, iv)
    # 使用 PKCS7Padding 填充
    pad_length = 16 - len(text) % 16
    text += bytes([pad_length]) * pad_length
    ciphertext = cipher.encrypt(text)
    return base64.b64encode(ciphertext).decode('utf-8')

上述代码中,我们使用了Crypto模块中的AES加密算法,并设置了加密密钥和向量。加密函数接受一个字符串类型的参数,将其转换为字节类型,使用AES加密算法进行加密并进行PKCS7Padding填充,最后使用base64进行编码返回加密后的字符串。

2. 解密

在接口自动化测试中,需要对一些从服务器获取的加密数据进行解密处理。下面是一个使用AES算法进行解密的示例代码:

import base64
from Crypto.Cipher import AES

# 设置解密密钥和向量
key = 'your_key'.encode('utf-8')
iv = 'your_iv'.encode('utf-8')

# 解密函数
def aes_decrypt(text):
    text = base64.b64decode(text)
    cipher = AES.new(key, AES.MODE_CBC, iv)
    plaintext = cipher.decrypt(text)
    # 去掉 PKCS7Padding 填充
    pad_length = plaintext[-1]
    plaintext = plaintext[:-pad_length]
    return plaintext.decode('utf-8')

上述代码中,我们使用了Crypto模块中的AES加密算法,并设置了解密密钥和向量。解密函数接受一个字符串类型的参数,将其使用base64进行解码后,使用AES解密算法进行解密,并去掉PKCS7Padding填充,最后将解密后的字节类型数据转换为字符串类型返回。

3. Sign签名

在接口自动化测试中,Sign签名用于验证请求是否被篡改。常用的Sign签名算法有MD5、SHA1、HMAC等。下面是一个使用MD5算法进行Sign签名的示例代码:

import hashlib

# 设置签名密钥
secret_ke = 'your_secret_key'.encode('utf-8')

# Sign签名函数
def md5_sign(params):
    # 按key升序排序
    sorted_params = sorted(params.items(), key=lambda x:x[0])
    # 拼接参数和值,以及密钥
    sign_str = ''
    for k, v in sorted_params:
        sign_str += k + str(v)
    sign_str += secret_key
    # 使用MD5算法进行Sign签名
    sign = hashlib.md5(sign_str.encode('utf-8')).hexdigest()
    return sign

上述代码中,我们使用了hashlib模块中的MD5算法,并设置了Sign签名密钥。Sign签名函数接受一个字典类型的参数,首先按照键升序排序,然后将参数和值拼接起来并加上Sign签名密钥,最后使用MD5算法进行Sign签名并返回签名结果。

4. 示例

下面是一个使用加密、解密和Sign签名的接口自动化测试示例代码:

import requests

# 加密函数
def aes_encrypt(text):
    # 省略加密代码

# 解密函数
def aes_decrypt(text):
    # 省略解密代码

# Sign签名函数
def md5_sign(params):
    # 省略Sign签名代码

# 测试接口
url = 'http://example.com/api'
params = {
    'name': 'John',
    'age': 18,
}

# 加密请求参数
encrypted_params = {}
for k, v in params.items():
    encrypted_params[k] = aes_encrypt(str(v))

# 生成Sign签名并添加到请求参数中
encrypted_params['sign'] = md5_sign(encrypted_params)

# 发送POST请求
response = requests.post(url, data=encrypted_params)

# 解密响应数据
decrypted_response = {}
for k, v in response.json().items():
    decrypted_response[k] = aes_decrypt(v)

print(decrypted_response)

上述代码中,我们定义了一个测试接口,并在发送POST请求前对请求参数进行加密处理。然后根据加密后的请求参数生成Sign签名,并将其添加到请求参数中一起发送POST请求。最后,根据服务器返回的加密响应数据进行解密处理并输出结果。

以上就是关于接口自动化测试中加密、解密和Sign签名的详细介绍和实现代码。通过使用上述方法,可以有效保证接口传输数据的安全性和完整性,并提高接口自动化测试的可靠性和稳定性。

自动化测试学习步骤结构图:

 

自动化测试福利:

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于单片机的数字频率计设计

数字频率计概述 数字频率计是计算机、通讯设备、音频视频等科研生产领域不可缺少的测量仪器。它是一种用十进制数字显示被测信号频率的数字测量仪器。它的基本功能是测量正弦信号,方波信号及其他各种单位时间内变化的物理量。在进行模拟、数字电路的设计、安装、调试…

基于AT89C52单片机的温度检测设计与仿真

点击链接获取Keil源码与Project Backups仿真图: https://download.csdn.net/download/qq_64505944/87770153 源码获取 主要内容: 本设计是基于52系列的单片机进行的设计,可以完成温度的测控,可以实现实际温度与设定温度区域的比较,并在LED上相应的显示结果。设计过程在硬…

算法 DAY57 动态规划13 647. 回文子串 516.最长回文子序列

647. 回文子串 暴力解法:两层for循环,再加一个判断是否是回文子串,时间复杂度O(n3) 五部曲 1、 判断一个子字符串(字符串的下表范围[i,j])是否回文,依赖于,子字符串(下表范围[i 1,…

CLion安装(详细步骤+截图)

目录 一、CLion-2021.1.3.exe 下载 二、运行环境mingw-w64压缩包下载 三、 安装插件 ---- ide-eval-resetter-2.1.13压缩包下载 一、CLion-2021.1.3.exe 下载 Other Versions - CLion (jetbrains.com) 1、下载 2、更改路径 (不要放在含有中文的路径下&a…

【Java面试】Java基础-集合相关知识点(1)

文章目录 1. 集合有哪些类?2. ArrayList3. Map主要有哪些类? 容器主要包括 Collection 和 Map 两种,Collection 存储着对象的集合,而 Map 存储着键值对(两个对象)的映射表。 1. 集合有哪些类? 集合是一组相关对象的容…

ThreadLocal底层源码解析

线程隔离,保证多线性访问安全 每个线程拿到的值私有,相互不干扰 ThreadLocal是JDK包提供的,它提供线程本地变量,如果创建一乐ThreadLocal变量,那么访问这个变量的每个线程都会有这个变量的一个副本,在实际…

跳槽? 我只想多赚点罢了

前言 五一过后也就也就意味着今年的金三银四跳槽季正式结束了,不知道大家是否拿到了offer,面对金三银四的招聘旺季,如果没有精心准备那笔者认为那是对自己不负责任;就我们测试员来说,多数的公司总体上面试都是以自我介…

表的存储原理(数据库)

目录 一、内部存储概述 二、 数据行(记录)结构 1、定长记录 2、变长记录 一、内部存储概述 表是有关某个特定实例的数据集合,在关系数据库中处于核心地位。 创建一个表,就会有一行或多行插入到用来管理这个表的多个系统表里。…

如何压缩照片大小不大于200k

如何压缩照片大小不大于200k?有时候需要压缩照片大小不大于200k是因为在一些场景下,上传或传输大文件会受到限制,例如通过电子邮件发送、上传到云存储空间等等。在这种情况下,压缩照片可以让图片更容易地传输和分享,并…

基于simulink进行音频波束成形系统的多核仿真

一、前言 此示例展示了 Simulink中的音频波束成形系统仿真模型如何使用数据流域提高性能。它使用 Simulink 中的数据流域自动将通信系统的数据驱动部分划分为多个线程,从而通过在桌面的多个内核上执行模拟来提高仿真的性能。 二、介绍 数据流执行域允许您在计算密集…

Docker Overlay2占用大量磁盘空间解决

问题 最近项目的jenkins编译时报错 FATAL: Unable to produce a script filejava.io.IOException: No space left on deviceat java.io.UnixFileSystem.createFileExclusively(Native Method)at java.io.File.createTempFile(File.java:2024)at hudson.FilePath$CreateTextTem…

#vue项目冗余请求处理#http://localhost:8080/sockjs-node/info?t=1683604231866

目录 前言一、为什么会出现这个请求?二、解决方法1.修改源码 总结 前言 提示:本文要记录的大概内容: 在我的vue项目中,开发环境下,一直重复发请求:http://localhost:8080/sockjs-node/info?t16836042318…

《花雕学AI》33:如何用XMind制作AI思维导图、鱼骨图和组织结构图

思维导图是一种有效的思维工具,它可以帮助我们整理信息,激发创意,提高效率。思维导图是一种以中心主题为核心,以分支结构为形式,以关键词和图像为内容的图形表示法。它可以让我们一目了然地看到知识的层次和逻辑&#…

手把手教你Vue+ECharts+高德地图API实现天气预报数据可视化

前言 所谓数据可视化,我们可以理解为从宏观角度来看一眼就能看出来整个数据的占比,走向。对于数据可视化,很多互联网公司是很看重这一块的,包括大厂;就比如阿里的淘宝,双十一的时候往往就需要将消费者的一…

论文浅尝 | 句法丰富的判别训练:一种有效的开放信息抽取方法

笔记整理:杜苗增,东南大学硕士,研究方向为多模态信息抽取 链接:https://aclanthology.org/2022.emnlp-main.401.pdf 动机 开放信息提取(OIE)是信息提取(IE)的一个分支,专注于从非结构化自然语言文本中提取结构化信息。…

论文笔记_2017_RS_迈向高清 3D 城市测绘:基于道路特征的移动测绘系统和航空影像配准

基本情况 出处:Javanmardi M, Javanmardi E, Gu Y, et al. Towards high-definition 3D urban mapping: Road feature-based registration of mobile mapping systems and aerial imagery[J]. Remote Sensing, 2017, 9(10): 975.原文地址:Remote Sensin…

Postman生成代码的小技巧

描述 你还在使用postman吗?你还是一条条复制参数吗?你还是手动录入数据吗?对于一些不经常使用postman的人来说,这个小技巧可以帮助你导入请求,以及转换成开发语言。 教程 1 抓包接口 以CSDN热榜为例,直…

数据可视化二、综合项目

零、文章目录 数据可视化二、综合项目 1、项目概述 (1)项目展示 (2)项目目的 市场需求:应对现在数据可视化的趋势,越来越多企业需要在很多场景(营销数据,生产数据,用户数据)下使…

Fiddler 微信小程序抓图教程(傻瓜式|汉化版|狗看了都直呼内行)

前言 本篇文章主要给大家详细讲解如何用Fiddler爬取微信小程序的图片,内容图文并茂,流程非常简单,我们开始吧。 目录 获取软件并打开点击工具设置相关代理如何抓图答疑总结 一、获取软件并打开 1、通过百度网盘下载获取安装包(链接是永久的…