数据流向示意图

架构设计

整体架构图

```

┌─────────────┐ 明文 ┌──────────────────┐ 密文 ┌─────────────┐

│ │ ───────────→ │ │ ───────────→ │ │

│ 原后端服务 │ │ 独立加密中间层 │ │ 前端 Vue │

│ (业务逻辑) │ ←───────────── │ (Gateway/Filter) │ ←───────────── │ │

│ │ 明文 │ │ 密文 │ │

└─────────────┘ └──────────────────┘ └─────────────┘

统一加解密拦截器

(可插拔算法策略)

┌──────────────┴──────────────┐

│ │

对称算法(AES-GCM) 非对称算法(RSA/ECC)

性能高,适合大数据量 适合密钥交换/小数据量

```

推荐方案:混合加密 + 拦截器模式

```

密钥协商阶段(非对称,仅一次):

┌─────────┐ 1.请求公钥 ┌─────────┐

│ Vue前端 │ ───────────────────→ │ 加密层 │

│ │ ←─────────────────── │ │

└─────────┘ 2.返回RSA公钥 └─────────┘

┌─────────┐ 3.生成AES密钥,用RSA公钥加密后上传

│ Vue前端 │ ───────────────────→ │ 加密层 │ (RSA解密拿到AES Key, 存入会话/Redis)

└─────────┘ └─────────┘

业务数据阶段(对称,每次请求):

┌─────────┐ AES加密的请求体 ┌─────────┐ 转发明文 ┌─────────┐

│ Vue前端 │ ───────────────────→ │ 加密层 │ ─────────────→ │ 原后端 │

│ │ ←─────────────────── │ (拦截器) │ ←───────────── │ │

└─────────┘ AES加密的响应体 └─────────┘ 明文响应 └─────────┘

```

模块划分

**1. 加密中间层(独立部署,Java/Spring)**

  • `EncryptFilter`:统一拦截器,读取/包装 Request、Response Body

  • `CryptoStrategy` 接口:定义 `encrypt()` / `decrypt()`,下挂 `AesStrategy`、`RsaStrategy` 实现,可通过配置切换算法

  • `KeyExchangeController`:负责非对称握手、分发会话密钥

  • 反向代理到真实后端(Feign/RestTemplate/WebClient 转发明文)

**2. 前端拦截(Vue + Axios)**

  • Axios 请求拦截器:发出前对 body 做 AES 加密

  • Axios 响应拦截器:收到后自动 AES 解密

  • 启动时做一次密钥协商,密钥存内存(不落 localStorage,防泄露)

**3. 性能保障要点**

  • 用 AES-GCM(带认证,防篡改)做日常数据加解密,纯内存计算,耗时通常在毫秒级,不会显著拖慢链路

  • RSA 只用于密钥交换,不用于业务数据本身(非对称算法对大数据慢很多)

  • 加密层与原后端之间走内网/明文,避免双重加密开销

  • 算法通过策略模式 + 配置中心(如 Nacos/Spring Cloud Config)热切换,无需重启

这是架构层面,确认这个方向后我可以分别给你写 Java(Spring Boot Filter + 策略模式)和 Vue(Axios 拦截器)的具体代码。