# SecurityApi **Repository Path**: leadline/SecurityApi ## Basic Information - **Project Name**: SecurityApi - **Description**: SpringBoot 请求参数解密,响应参数加密 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2024-08-29 - **Last Updated**: 2024-08-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README

logo

SecurityApi v1.0.1

一个基于 Java 接口参数加密框架,让接口参数加密变得简单、优雅!


GitHub Gitee GitCode Maven Maven
Apache 2

--- ### SecurityApi 介绍 SecurityApi 是一个基于 Java 接口参数加密框架,可以让请求参数解密,响应参数加密,目前支持AES、RSA加密。 ### SecurityApi 模块 - `security-api-demo-client-vue`:客户端 Vue3 + Element-Plus 演示示例 - `security-api-demo-spring-boot2`:SpringBoot2.x 版本服务器端演示示例 - `security-api-demo-spring-boot3`:SpringBoot3.x 版本服务器端演示示例 - `security-api-spring-boot-starter`:SpringBoot2.x 版本源码 - `security-api-spring-boot3-starter`:SpringBoot3.x 版本源码 ### SecurityApi 依赖 ```xml io.github.chenhanhui security-api-spring-boot-starter 1.0.1 io.github.chenhanhui security-api-spring-boot3-starter 1.0.1 ```
简单示例展示:(点击展开 / 折叠) 在启动类中添加 `@EnableSecurityParameter` 注解启动 SecurityApi 功能: ```java @SpringBootApplication @EnableSecurityParameter public class SecurityApiApplication { public static void main(String[] args) { SpringApplication.run(SecurityApiApplication.class, args); } } ``` 如果使用RSA加密,需要在 `application.yml` 添加以下代码: ```yml security: encrypt: mode: rsa rsa: private-key: 'MIIEvAIBADAN...PIUg==' client-public-key: 'MIIBIjAN...37zAEwIDAQAB' ``` 注意:`private-key` 是服务器私钥,`client-public-key` 是客户端公钥,默认为 2048 位。 密钥是有两对,服务器公钥和私钥,客户端公钥和私钥。 公钥双方都会有(包括对方的),私钥只有自己拥有自己的,不会服务器有客户端私钥,或者客户端有服务器私钥。 1. 当客户端向服务器发送数据请求时: 客户端用服务器的公钥进行数据加密,用客户端的私钥进行签名。 2. 服务器接收数据后: 服务器用客户端的公钥进行验签,用服务器私钥进行数据的解密。 3. 当服务器响应客户端数据结果时: 服务器是用客户端的公钥进行数据加密,用服务器私钥进行签名。 4. 客户端接收数据后: 客户端就用服务器公钥进行验签,用客户端的私钥进行解密。 这一切不需要开发者关心,SecurityApi 框架已经帮你做好了。 我们只需使用以下代码生成 RSA 公钥和私钥,需要生成两对,分别是客户端公钥和私钥,服务器公钥和私钥: ```java public class RSAGenerate { public static void main(String[] args) { int bits = 2048; Map keyMap = RSAUtils.generateKeyPair(bits); String publicKeyStr = keyMap.get("publicKey"); String privateKeyStr = keyMap.get("privateKey"); System.out.println("======================================="); System.out.println("bits:" + bits); System.out.println("publicKey:" + publicKeyStr); System.out.println("privateKey:" + privateKeyStr); System.out.println("======================================="); } } ``` 在 SecurityApi 中,一行代码解决参数解密加密,只需在类或者方法上添加 `@SecurityParameter` 注解, 如下: ```java @RestController @RequestMapping("/author") @SecurityParameter public class AuthorController implements SecurityBuilder { /** * 请求解密,响应加密 * * @param author Author对象 * @return 返回加密后的数据 ResponseBody格式 */ @PostMapping("/inDecodeOutEncode") public ResponseEntity inDecodeOutEncode(@RequestBody @Validated Author author) { author.setUrl("https://blog.csdn.net/xiaohuihui1400"); return success(author); } } ```
### 代码托管 - GitHub:[https://github.com/ChenHanHui/SecurityApi](https://github.com/ChenHanHui/SecurityApi) - Gitee:[https://gitee.com/chen-hanhui/SecurityApi.git](https://gitee.com/chen-hanhui/SecurityApi.git) - GitCode:[https://gitcode.com/xiaohuihui1400/SecurityApi.git](https://gitcode.com/xiaohuihui1400/SecurityApi.git) ### 交流群 QQ交流群:982597743 [点击加入](https://qm.qq.com/q/E6Qf8gUUFO) 加入群聊的好处: - 第一时间收到框架更新通知 - 第一时间收到框架 bug 通知 ### 更多信息

详情文档:https://blog.csdn.net/xiaohuihui1400/article/details/140759490