接口自动化入门: 加密接口处理之对称加密

📝 面试求职: 「面试试题小程序」 ,内容涵盖 测试基础、Linux操作系统、MySQL数据库、Web功能测试、接口测试、APPium移动端测试、Python知识、Selenium自动化测试相关、性能测试、性能测试、计算机网络知识、Jmeter、HR面试,命中率杠杠的。(大家刷起来…)

📝 职场经验干货:

软件测试工程师简历上如何编写个人信息(一周8个面试)

软件测试工程师简历上如何编写专业技能(一周8个面试)

软件测试工程师简历上如何编写项目经验(一周8个面试)

软件测试工程师简历上如何编写个人荣誉(一周8个面试)

软件测试行情分享(这些都不了解就别贸然冲了.)

软件测试面试重点,搞清楚这些轻松拿到年薪30W+

软件测试面试刷题小程序免费使用(永久使用)


在接口自动化测试中,对称加密是一种常见的加密方式,用于保护接口传输的数据安全。对称加密使用相同的密钥进行加密和解密,常见的对称加密算法包括 AES、DES 和 3DES。以下将介绍如何在接口自动化中实现对称加密处理。

1. 对称加密的基本概念

对称加密算法使用相同的密钥对数据进行加密和解密。其优点是加密和解密速度快,适合处理大量数据,但密钥管理较为复杂。常见的对称加密算法包括:

AES(高级加密标准):支持 128、192 和 256 位密钥长度,安全性高,速度较快。

DES(数据加密标准):密钥长度为 56 位,安全性较低,但实现简单。

3DES(三重数据加密标准):基于 DES 的改进,安全性更高,但速度较慢。

2. 使用 Python 实现对称加密

2.1 AES 加密实现

AES 是目前最常用的对称加密算法,支持多种密钥长度。以下是一个基于 Python 的 AES 加密和解密示例:

from Crypto.Cipher import AES

from Crypto.Util.Padding import pad, unpad

import base64

def aes_encrypt(data, key):

    cipher = AES.new(key.encode('utf-8'), AES.MODE_CBC, iv=b'1234567890123456')

    padded_data = pad(data.encode('utf-8'), AES.block_size)

    encrypted_data = cipher.encrypt(padded_data)

    return base64.b64encode(encrypted_data).decode('utf-8')

def aes_decrypt(encrypted_data, key):

    encrypted_data_bytes = base64.b64decode(encrypted_data)

    cipher = AES.new(key.encode('utf-8'), AES.MODE_CBC, iv=b'1234567890123456')

    decrypted_padded_data = cipher.decrypt(encrypted_data_bytes)

    decrypted_data = unpad(decrypted_padded_data, AES.block_size)

    return decrypted_data.decode('utf-8')

# 示例使用

key = "thisisaverysecurekey1234"# 密钥长度必须为 16、24 或 32 字节

data = "Hello, Secure World!"

encrypted_data = aes_encrypt(data, key)

print(f"加密结果: {encrypted_data}")

decrypted_data = aes_decrypt(encrypted_data, key)

print(f"解密结果: {decrypted_data}")

2.2 DES 加密实现

DES 是较早期的对称加密算法,密钥长度为 56 位。以下是一个基于 Python 的 DES 加密和解密示例:

from Crypto.Cipher import DES

from Crypto.Util.Padding import pad, unpad

import base64

def des_encrypt(data, key):

    cipher = DES.new(key.encode('utf-8'), DES.MODE_CBC, iv=b'12345678')

    padded_data = pad(data.encode('utf-8'), DES.block_size)

    encrypted_data = cipher.encrypt(padded_data)

    return base64.b64encode(encrypted_data).decode('utf-8')

def des_decrypt(encrypted_data, key):

    encrypted_data_bytes = base64.b64decode(encrypted_data)

    cipher = DES.new(key.encode('utf-8'), DES.MODE_CBC, iv=b'12345678')

    decrypted_padded_data = cipher.decrypt(encrypted_data_bytes)

    decrypted_data = unpad(decrypted_padded_data, DES.block_size)

    return decrypted_data.decode('utf-8')

# 示例使用

key = "8bytekey"# 密钥长度必须为 8 字节

data = "Hello, DES Encryption!"

encrypted_data = des_encrypt(data, key)

print(f"加密结果: {encrypted_data}")

decrypted_data = des_decrypt(encrypted_data, key)

print(f"解密结果: {decrypted_data}")‍

3. 在接口自动化中使用对称加密

在接口自动化测试中,对称加密通常用于加密请求参数或响应体。以下是一个完整的示例,展示如何在接口请求中使用 AES 加密:

import requests

def aes_encrypt(data, key):

    cipher = AES.new(key.encode('utf-8'), AES.MODE_CBC, iv=b'1234567890123456')

    padded_data = pad(data.encode('utf-8'), AES.block_size)

    encrypted_data = cipher.encrypt(padded_data)

    return base64.b64encode(encrypted_data).decode('utf-8')

# 示例:加密接口请求参数

key = "thisisaverysecurekey1234"# 密钥长度必须为 16、24 或 32 字节

data = '{"name": "John Doe", "password": "123456"}'

encrypted_data = aes_encrypt(data, key)

print(f"加密后的请求参数: {encrypted_data}")

# 发送加密请求

url = "https://api.example.com/login"

headers = {"Content-Type": "application/json"}

response = requests.post(url, json={"encrypted_data": encrypted_data}, headers=headers)

print(f"响应状态码: {response.status_code}")

print(f"响应内容: {response.json()}")‍

4. 注意事项

密钥管理:对称加密的核心是密钥的安全性。密钥必须妥善保管,避免泄露。

加密算法选择:根据实际需求选择合适的加密算法。AES 是目前推荐的对称加密算法。

性能优化:对称加密的性能较高,但在处理大量数据时仍需注意性能优化。

5. 总结

对称加密是接口自动化测试中常用的数据加密方式,通过使用相同的密钥进行加密和解密,可以有效保护接口传输数据的安全性。Python 的 pycryptodome 库提供了丰富的对称加密算法实现,结合接口请求,可以轻松实现加密接口的自动化测试。希望这些内容能帮助你更好地理解和应用对称加密技术。

最后: 下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取【保证100%免费】
在这里插入图片描述​​​​
在这里插入图片描述​​​​

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值