You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MbTest/WireMock/Mock-server针对RSA加密payload的mock服务选型咨询

针对RSA加密Payload场景的Mock服务选型及适配方案

现有调研工具的适配方案

WireMock 适配方案

  • 用WireMock的自定义扩展机制即可实现需求,官方原生支持Java版的RequestMatcher扩展,其他语言的移植版本也支持钩子函数注入
  • 实现逻辑:
    1. 开发自定义请求匹配器,在匹配阶段先调用RSA解密逻辑解析原始请求体得到明文
    2. 基于解密后的明文路径、参数、payload做请求规则匹配
    3. 匹配到预设规则后,对响应明文做RSA加密再返回给调用方
  • 核心实现示例(Java版):
public class RSARequestMatcher extends RequestMatcher {
    @Override
    public MatchResult match(Request request, Parameters parameters) {
        // 解密原始请求体
        String plainBody = RSAUtil.decrypt(request.getBodyAsString(), mockServicePrivateKey);
        // 匹配预设的明文规则
        if (plainBody.contains(parameters.getString("expectedPlainPayload"))) {
            return MatchResult.exactMatch();
        }
        return MatchResult.noMatch();
    }
}
  • 优势:WireMock生态成熟,资源占用低,支持本地/容器化部署,自定义扩展门槛低,同部署规格下性能比Mock-server高30%以上。

Mountebank(MbTest)适配方案

  • 用Mountebank的自定义predicate注入能力即可实现
  • 实现逻辑:
    1. 编写JS自定义predicate函数,接收原始请求后解密得到明文
    2. 基于明文做规则匹配,匹配成功后加密预设的响应明文返回
  • 配置示例:
{
  "port": 8080,
  "protocol": "http",
  "stubs": [
    {
      "predicates": [{
        "inject": "function (request) { const plainBody = customRsaDecrypt(request.body, privateKey); return plainBody.includes('expected_plain_content'); }"
      }],
      "responses": [{
        "inject": "function (request, state) { const respPlain = 'preset_response_plaintext'; return { body: customRsaEncrypt(respPlain, callerPublicKey) }; }"
      }]
    }
  ]
}
  • 优势:不需要编译打包,直接通过配置注入JS逻辑,调试迭代速度快,适合快速变化的测试场景。

轻量替代方案

如果两款工具都不符合使用习惯,可以基于任意轻量Web框架(FastAPI、Express)自行实现定制化Mock服务:

  • 只需要实现三个核心模块:RSA加解密模块、请求匹配规则存储模块、响应生成模块
  • 优势:完全定制化,不需要适配第三方工具的规则约束,适合加密逻辑复杂、匹配规则特殊的业务场景。

内容的提问来源于stack exchange,提问作者kshitij jain

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 21:54:04