## 前言 * 在系统的基础架构中,安全框架、令牌鉴权已经是默认的基础功能 * 但某些场景,仅有鉴权是不够的,一些比较重要的数据,一旦泄露将会导致很严重的后果 * 所以在此之外,还需要一个针对请求报文加密解密的工具,下面我们就来看一下这个功能如何使用 ## 依赖引用 ~~~xml org.springblade blade-starter-api-crypto ~~~ ## 加密解密支持 - 可进行加密的方式有: - - [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 ~~~