编辑 | blame | 历史 | 原始文档

前言

  • 在系统的基础架构中,安全框架、令牌鉴权已经是默认的基础功能
  • 但某些场景,仅有鉴权是不够的,一些比较重要的数据,一旦泄露将会导致很严重的后果
  • 所以在此之外,还需要一个针对请求报文加密解密的工具,下面我们就来看一下这个功能如何使用

依赖引用

<dependency>
    <groupId>org.springblade</groupId>
    <artifactId>blade-starter-api-crypto</artifactId>
</dependency>

加密解密支持

  • 可进行加密的方式有:
      • [x] AES(@ApiEncryptAes
      • [x] DES(@ApiEncryptDes
  • 可进行解密的方式有:
      • [x] AES(@ApiDecryptAes
      • [x] DES(@ApiDecryptDes

注解说明

一、解密(用于请求参数)

@ApiDecryptAes@ApiDecryptDes@ApiDecryptRsa,注解 secretKey 可配置当前使用的私钥,优先于全局的配置。

可使用范围:
1. 方法参数(用于get、post 的 url 参数),可配置统一的url变量名。base64 的 json 数据。
2. 方法,用于(post 的 body)
3. 类,表示整个控制器的(post 的 body)用于加密。

二、 加密(用于响应数据)

@ApiEncryptAes@ApiEncryptDes@ApiEncryptRsa,注解 secretKey 可配置当前使用的私钥,优先于全局的配置。

可使用范围:
1. 方法,用于响应的 body加密。
2. 类,表示整个控制器的响应的 body加密。

配置说明

配置项 默认值 说明
blade.api.crypto.enable true 是否开启 api 签名
blade.api.crypto.param-name data url的参数签名,传递的参数名。例如:/user?data=签名后的数据
blade.api.crypto.rsa-private-key rsa 私钥
blade.api.crypto.aes-key aes 密钥
blade.api.crypto.des-key des 密钥

注意:代码中的文本转换和签名均采用的 utf-8 字符集。

本模块需要开启jackson text-plain 的支持。
~~~yaml

blade配置

blade:
#接口配置
api:
# 报文加密配置
crypto:
# 启用报文加密配置
enabled: true
# 使用AesUtil.genAesKey()生成
aes-key: "O2BEeIv399qHQNhD6aGW8R8DEj4bqHXm"
# 使用DesUtil.genDesKey()生成
des-key: "jMVCBsFGDQr1USHo"
#jackson配置
jackson:
# 支持text文本请求,与报文加密同时开启
support-text-plain: true
~~~