jck28-lucio-接口加密与解密

目录

  • 加密解密简介
  • Base64 接口解密实战

加密解密简介

  • 加密:明文转换成密文的过程
  • 解密:密文还原成明文的过程
  • 常见加密算法
    • AES
    • RSA
    • MD5
    • Base64

解密方案

  • 通用加密算法
    • 使用对应解密算法
  • 自研加密算法
    • 研发提供加解密 lib
  • 第三方加密服务
    • 寻求加密方提供远程解析服务

接口解密实战

  • 加密
    • encodeBase64String()
  • 解密
    • decodeBase64()
import org.apache.commons.codec.binary.Base64;
import org.junit.jupiter.api.Test;

import java.nio.charset.StandardCharsets;


public class TestBase64 {
    @Test
    void testEncodeAndDecode(){

        // 加密一串数据:hogwarts
        // 获取字节数组
        byte[] arr1 = "hogwarts".getBytes(StandardCharsets.UTF_8);
        // 执行加密
        String encodedMsg = Base64.encodeBase64String(arr1);


        // 解密一串数据:aG9nd2FydHM=
        // 执行解密
        byte[] arr2 = Base64.decodeBase64("aG9nd2FydHM=");
        // 生成字符串
        String decodeMsg = new String(arr2, StandardCharsets.UTF_8);


    }
}
接口解密实战
解密后响应断言
import org.apache.commons.codec.binary.Base64;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import java.nio.charset.StandardCharsets;
import java.util.LinkedHashMap;
import static io.restassured.RestAssured.given;

public class TestDecode {
    @Test
    void testDecode(){

        // 加密一串数据
        byte[] data = "hogwarts".getBytes(StandardCharsets.UTF_8);
        String secretMsg = Base64.encodeBase64String(data);

        // 发起请求,并获取响应信息
        LinkedHashMap<String, String> responseForm =
            given()
                .formParam("msg", secretMsg)  // 提交表单数据
            .when()
                .post("https://httpbin.ceshiren.com/post")  // 发起POST请求
            .then()
                .log().all()  // 打印完整响应信息
                .extract().path("form");  // 提取form信息

        // 提取加密字段
        String encodedMsg = responseForm.get("msg");

        // 解密操作
        String decodedMsg = new String(Base64.decodeBase64(encodedMsg));
        // 响应断言
        Assertions.assertEquals("hogwarts", decodedMsg);
    }
}

接口解密实战

  • 解密后响应断言
import org.apache.commons.codec.binary.Base64;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import java.nio.charset.StandardCharsets;
import java.util.LinkedHashMap;
import static io.restassured.RestAssured.given;

public class TestDecode {
    @Test
    void testDecode(){

        // 加密一串数据
        byte[] data = "hogwarts".getBytes(StandardCharsets.UTF_8);
        String secretMsg = Base64.encodeBase64String(data);

        // 发起请求,并获取响应信息
        LinkedHashMap<String, String> responseForm =
            given()
                .formParam("msg", secretMsg)  // 提交表单数据
            .when()
                .post("https://httpbin.ceshiren.com/post")  // 发起POST请求
            .then()
                .log().all()  // 打印完整响应信息
                .extract().path("form");  // 提取form信息

        // 提取加密字段
        String encodedMsg = responseForm.get("msg");

        // 解密操作
        String decodedMsg = new String(Base64.decodeBase64(encodedMsg));
        // 响应断言
        Assertions.assertEquals("hogwarts", decodedMsg);
    }
}