加密类型识别
对称加密:AES、DES、3DES等
非对称加密:RSA、ECC等
哈希算法:MD5、SHA系列
数字签名:RSA签名、DSA等
自定义加密:业务特有的混合加密方式
关键信息收集
需要从开发获取的信息
加密算法类型 = "AES/CBC/PKCS5Padding"
密钥/公钥 = "base64编码的密钥"
加密参数列表 = ["sign", "token", "encrypted_data"]
加密时机 = "请求前/响应后"
加解密工具封装
python
class CryptoUtils: @staticmethod def aes_encrypt(data, key, iv): """AES加密工具""" # 实现加密逻辑 pass @staticmethod def rsa_encrypt(data, public_key): """RSA加密工具""" pass @staticmethod def generate_sign(params, secret_key): """生成签名""" # 按规则排序、拼接、加密 pass测试数据准备
预先生成各种测试用的密钥对
准备加密测试用例数据集
建立参数化测试数据池
python
def test_encrypted_request_success(): # 1. 准备明文数据 raw_data = {"user_id": 123, "amount": 100.0} # 2. 按接口规范加密 encrypted_data = CryptoUtils.aes_encrypt( json.dumps(raw_data), TEST_KEY, TEST_IV ) # 3. 生成签名 sign = CryptoUtils.generate_sign(raw_data, SECRET_KEY) # 4. 发送加密请求 response = api_request({ "data": encrypted_data, "sign": sign, "timestamp": get_timestamp() }) # 5. 验证响应 assert response.status_code == 200 assert decrypt_response(response.json()) == expected_result加密参数异常测试
python
# 测试用例设计encryption_test_cases = [ # 加密算法异常 {"case": "错误加密算法", "algorithm": "INVALID_ALG", "expected": "解密失败"}, # 密钥异常 {"case": "空密钥", "key": "", "expected": "加密异常"}, {"case": "错误密钥", "key": "wrong_key", "expected": "解密失败"}, # 数据格式异常 {"case": "空数据加密", "data": "", "expected": "处理异常"}, {"case": "超大数据加密", "data": "x"*10000, "expected": "长度限制"}, # 时效性测试 {"case": "签名超时", "timestamp": "过期时间", "expected": "签名过期"},]签名验证测试pythondef test_signature_validation(): # 正确签名 test_valid_signature() # 签名错误场景 test_cases = [ {"修改": "缺少签名", "action": "remove_sign", "expected": 400}, {"修改": "签名错误", "action": "wrong_sign", "expected": 401}, {"修改": "签名参数篡改", "action": "tamper_params", "expected": 401}, {"修改": "重放攻击", "action": "replay_request", "expected": 403}, ]加密强度验证
python
def test_encryption_strength(): # 密钥长度验证 assert len(encryption_key) >= 128 # AES最小128位 # 算法安全性验证 assert "ECB" not in algorithm # 避免ECB模式 assert "PKCS5Padding" in algorithm # 使用标准填充 # 随机性测试 same_data_encryptions = [ encrypt_data(test_data) for _ in range(10) ] assert len(set(same_data_encryptions)) > 1 # 相同数据加密结果应不同防重放攻击测试pythondef test_replay_attack_protection(): # 捕获正常请求 normal_request = capture_valid_request() # 重放相同请求 response1 = send_request(normal_request) response2 = send_request(normal_request) # 重放 # 验证防重放机制 assert response2.status_code != 200 assert "timestamp" in response2.json().get("error_msg", "")测试用例模板
python
class EncryptedAPITestCase: def setup(self): self.crypto_util = CryptoUtils() self.api_client = APIClient() def template_encrypted_test(self, test_data, expected_result): """加密接口测试模板""" # 自动加密处理 encrypted_request = self.encrypt_request(test_data) # 发送请求 response = self.api_client.post(encrypted_request) # 自动解密验证 decrypted_response = self.decrypt_response(response) assert decrypted_response == expected_result参数化测试pythonimport pytest@pytest.mark.parametrize("user_data,expected", [ ({"user_id": 1, "name": "正常用户"}, {"code": 200}), ({"user_id": 0, "name": "边界用户"}, {"code": 200}), ({"user_id": -1, "name": "异常用户"}, {"code": 400}),])def test_encrypted_user_api(user_data, expected): # 自动执行加密和验证 run_encrypted_test("user/create", user_data, expected)监控和告警
#pythonclass EncryptionMonitor: def monitor_encryption_performance(self): """监控加密性能""" # 加密耗时监控 # 解密成功率监控 # 密钥轮换监控 def alert_encryption_issues(self): """加密问题告警""" # 解密失败率上升 # 加密性能下降 # 安全漏洞预警密钥管理测试
pythondef test_key_rotation(): """密钥轮换测试""" # 测试旧密钥逐步淘汰 # 测试新密钥正常使用 # 验证双向兼容性原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。