接口自动化中如何完成接口加密与解密?

发布时间:2024年01月20日

加密是一种限制对网络上传输数据的访问权的技术。将密文还原为原始明文的过程称为解密,它是加密的反向处理。在接口开发中使用加密、解密技术,可以防止机密数据被泄露或篡改。在接口自动化测试过程中,如果要验证加密接口响应值正确性的话,就必须使用正确的解密方式先对其实现解密,再完成验证。

解决方案

通用加密算法
场景:了解数据使用的通用加密算法,例如 base64。
解决方案:使用通用的解密算法在获取加密响应信息后,对数据进行解密操作。
研发提供加解密 lib
场景:不了解对应的加密算法。
解决方案:需要研发提供加解密对应的 lib 包,完成数据解密。
提供远程解析服务
场景:既不是通用加密算法,研发也无法提供 lib 包。
解决方案:需要加密方提供远程解析服务,这样既解决了加解密问题,研发方也无需担心加解密算法暴露的问题。
实战练习

接下来对 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");
总结:

感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助

?视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。???

文章来源:https://blog.csdn.net/2301_77645750/article/details/135716656
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。