📝 面试求职: 「面试试题小程序」 ,内容涵盖 测试基础、Linux操作系统、MySQL数据库、Web功能测试、接口测试、APPium移动端测试、Python知识、Selenium自动化测试相关、性能测试、性能测试、计算机网络知识、Jmeter、HR面试,命中率杠杠的。(大家刷起来…)
📝 职场经验干货:
在接口自动化测试中,对称加密是一种常见的加密方式,用于保护接口传输的数据安全。对称加密使用相同的密钥进行加密和解密,常见的对称加密算法包括 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%免费】