加密是一种限制对网络上传输数据的访问权的技术。将密文还原为原始明文的过程称为解密,它是加密的反向处理。在接口开发中使用加密、解密技术,可以防止机密数据被泄露或篡改。在接口自动化测试过程中,如果要验证加密接口响应值正确性的话,就必须使用正确的解密方式先对其实现解密,再完成验证。
<strong>解决方案</strong>
实战练习
接下来对 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");
} }
推荐学习
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。