当前位置: 首页 > news >正文

SpringBoot使用rsa-encrypt-body-spring-boot实现接口加解密

废话不多说,直接上代码

引入依赖

<dependency><groupId>cn.shuibo</groupId><artifactId>rsa-encrypt-body-spring-boot</artifactId><version>1.0.1.RELEASE</version>
</dependency>

配置文件

rsa:encrypt:# 是否开启加密open: true# 是否打印加解密logshowLog: true# RSA公钥publicKey: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAn0MVxeKJM36xHVlivHBMfr5hY+UwLGGJ6H32zV5rruX38grA46CeZWncTEKq2QYrrvsyN6FU+gQeA9vXyeXypeAe8Hmv2dfVo2o+5vLO4E13KBoqT6iADEmfPkA/fkg32r/qzxK/DzMUBkkil8cqqH5+QSsLpvTB/F4FalNoB6k7Fov83Pqlc19f6nXDfWoFr4+fAONcwnBzSMr2JhLNIZsM2WPmu3JdxaVUX9a6lpSrlsFU1uDszWmLjI8nwKdudISqqGLDyaATlm88z4xaqVPlbPNeG4Ht+TNNRHGFXfD6XlTb9O9AhQ2S6Rmc/N+lg3pT8oJ9z9KndkdkuphHfQIDAQAB# RSA私钥privateKey: MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCfQxXF4okzfrEdWWK8cEx+vmFj5TAsYYnoffbNXmuu5ffyCsDjoJ5ladxMQqrZBiuu+zI3oVT6BB4D29fJ5fKl4B7wea/Z19Wjaj7m8s7gTXcoGipPqIAMSZ8+QD9+SDfav+rPEr8PMxQGSSKXxyqofn5BKwum9MH8XgVqU2gHqTsWi/zc+qVzX1/qdcN9agWvj58A41zCcHNIyvYmEs0hmwzZY+a7cl3FpVRf1rqWlKuWwVTW4OzNaYuMjyfAp250hKqoYsPJoBOWbzzPjFqpU+Vs814bge35M01EcYVd8PpeVNv070CFDZLpGZz836WDelPygn3P0qd2R2S6mEd9AgMBAAECggEABtuWpmy4x7Te34qny8FyKcr82pZV2rNggthZtkIolOFmKc/4ulSCPY+vYsFEJhAz9VbvtKGHzTQ8LqJaymDSb/4UlvpGbjTzCBRdHQi7i8EKLnnh9Igm62CIMOAHW+K0NQEqlTwTag4jAJpJmQuEdLjtqtS1rbzAVaOezBNHWX0IisgKL1TP6naHn/mJPujx7zodquTy3PwrXbwv/E2gwLeTCjLBcbHBuq4Z9MQ8vA7ztMgbwILtIPcEVtNLIxUKFGXZQUgzwirTNPHJDYVcuzsi4mx10BwPy0Uyw2OdH/k6B85OQS9lps6Bv5mOng4xRBD2EODXM3QDnIE8UTtkKQKBgQDe8sYTlq/MnKc5VcQWsLSezHtmibd2CZ55Q7c6iRO+fgCYKHGmXosmik8X/mISijq65jUR6vUrGJaZ4SBLG4Vdu4hs0RwPtGyHf3OXmKecwYYiypf0xfG9DQbiKw+OuRiJXeT4InZxPDrZKH41OKHoL/eTEpeHoE9MZ90epQX6awKBgQC231IR+Ol8jkmmoDNJspCtFeARjCliGflQwLfFuprPpqhyt1Cg1/x+245sBLoCMWRNm1ZT638cnQsRzB/C2QGqQ8l44pL95Ffj7HAf7NTvM3kFcOK87Cmw5Hae73ARiIKft6cKJoGfuxxWIwGIGLb/WAakZ4viYgW1XLd9MnIPtwKBgAp8DEibi4Tp0QtnNyOCB9x37U2zKEeKyEMXpiRAkgchUdHWBRI32/9h/bo5Ik+Q5JYpgVFoZUMzktGFvskJcEoqKY5EfzdV2sy8d6knaqp6h15XfLHsJSQo2qwELmUd20OKgNwSctN8a6AOwXCrSyHqL5BhDXM5XMFRGRr508AlAoGALNrsG4JtauLPx/Ilgl8tQ3dJJaS2hdyPHbKXoQVbcbGUQccbHMi9ozQhY/do1J7e1nZSn3T1EcSncW8bH0TxNp037tHMckAvGrXk7r+9nwqGFcKRqvtWYpA3VFawq2xLdferHj9BrjdMBQjDGGnPgSRLRMotMpMOiWS7kRbtiVMCgYBmQKXaPHjkXtreFG8XJFsCTLV0aV4yTMF5mqqkxHmXm+PZq+qvJf8F0NZollj7AKOrIkTEcw6waeHwu2zD8j+xQP4AjU8SMZZfwnj9Sr5Vc6AFFZHYHr6n9VfSF+puoDcmaU6MLqcOI9qpJmHKe5F2+HhgDlVGDVH60BrjQwGUnw==

开启加解密

package com.qiangesoft.encryption;import cn.shuibo.annotation.EnableSecurity;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;/*** 启动器** @author qiangesoft* @date 2024-05-22*/
@EnableSecurity
@SpringBootApplication
public class EncryptionApplication {public static void main(String[] args) {SpringApplication.run(EncryptionApplication.class, args);}}

案例

package com.qiangesoft.encryption.controller;import cn.shuibo.annotation.Decrypt;
import cn.shuibo.annotation.Encrypt;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;/*** 测试** @author qiangesoft* @date 2024-05-22*/
@Slf4j
@RequestMapping("/test")
@RestController
public class TestController {@Encrypt@GetMapping("/encryption")public UserDTO encryption() {UserDTO userDTO = new UserDTO();userDTO.setUsername("admin");userDTO.setPassword("123456");userDTO.setNickname("超级管理员");userDTO.setSex("男");userDTO.setAge(29);userDTO.setTelephone("13333333333");userDTO.setAddress("北京市西城区");return userDTO;}@Decrypt@PostMapping("/decryption")public UserDTO decryption(@RequestBody UserDTO userDTO) {return userDTO;}}
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<button onclick="encryption()">加密提交</button>
<button onclick="decryption()">解密数据</button>
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.js"></script>
<script src="https://cdn.bootcdn.net/ajax/libs/jsencrypt/3.0.0-rc.1/jsencrypt.js"></script>
<script>const PUBLIC_KEY = 'MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAn0MVxeKJM36xHVlivHBMfr5hY+UwLGGJ6H32zV5rruX38grA46CeZWncTEKq2QYrrvsyN6FU+gQeA9vXyeXypeAe8Hmv2dfVo2o+5vLO4E13KBoqT6iADEmfPkA/fkg32r/qzxK/DzMUBkkil8cqqH5+QSsLpvTB/F4FalNoB6k7Fov83Pqlc19f6nXDfWoFr4+fAONcwnBzSMr2JhLNIZsM2WPmu3JdxaVUX9a6lpSrlsFU1uDszWmLjI8nwKdudISqqGLDyaATlm88z4xaqVPlbPNeG4Ht+TNNRHGFXfD6XlTb9O9AhQ2S6Rmc/N+lg3pT8oJ9z9KndkdkuphHfQIDAQAB';const PRIVATE_KEY = 'MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCfQxXF4okzfrEdWWK8cEx+vmFj5TAsYYnoffbNXmuu5ffyCsDjoJ5ladxMQqrZBiuu+zI3oVT6BB4D29fJ5fKl4B7wea/Z19Wjaj7m8s7gTXcoGipPqIAMSZ8+QD9+SDfav+rPEr8PMxQGSSKXxyqofn5BKwum9MH8XgVqU2gHqTsWi/zc+qVzX1/qdcN9agWvj58A41zCcHNIyvYmEs0hmwzZY+a7cl3FpVRf1rqWlKuWwVTW4OzNaYuMjyfAp250hKqoYsPJoBOWbzzPjFqpU+Vs814bge35M01EcYVd8PpeVNv070CFDZLpGZz836WDelPygn3P0qd2R2S6mEd9AgMBAAECggEABtuWpmy4x7Te34qny8FyKcr82pZV2rNggthZtkIolOFmKc/4ulSCPY+vYsFEJhAz9VbvtKGHzTQ8LqJaymDSb/4UlvpGbjTzCBRdHQi7i8EKLnnh9Igm62CIMOAHW+K0NQEqlTwTag4jAJpJmQuEdLjtqtS1rbzAVaOezBNHWX0IisgKL1TP6naHn/mJPujx7zodquTy3PwrXbwv/E2gwLeTCjLBcbHBuq4Z9MQ8vA7ztMgbwILtIPcEVtNLIxUKFGXZQUgzwirTNPHJDYVcuzsi4mx10BwPy0Uyw2OdH/k6B85OQS9lps6Bv5mOng4xRBD2EODXM3QDnIE8UTtkKQKBgQDe8sYTlq/MnKc5VcQWsLSezHtmibd2CZ55Q7c6iRO+fgCYKHGmXosmik8X/mISijq65jUR6vUrGJaZ4SBLG4Vdu4hs0RwPtGyHf3OXmKecwYYiypf0xfG9DQbiKw+OuRiJXeT4InZxPDrZKH41OKHoL/eTEpeHoE9MZ90epQX6awKBgQC231IR+Ol8jkmmoDNJspCtFeARjCliGflQwLfFuprPpqhyt1Cg1/x+245sBLoCMWRNm1ZT638cnQsRzB/C2QGqQ8l44pL95Ffj7HAf7NTvM3kFcOK87Cmw5Hae73ARiIKft6cKJoGfuxxWIwGIGLb/WAakZ4viYgW1XLd9MnIPtwKBgAp8DEibi4Tp0QtnNyOCB9x37U2zKEeKyEMXpiRAkgchUdHWBRI32/9h/bo5Ik+Q5JYpgVFoZUMzktGFvskJcEoqKY5EfzdV2sy8d6knaqp6h15XfLHsJSQo2qwELmUd20OKgNwSctN8a6AOwXCrSyHqL5BhDXM5XMFRGRr508AlAoGALNrsG4JtauLPx/Ilgl8tQ3dJJaS2hdyPHbKXoQVbcbGUQccbHMi9ozQhY/do1J7e1nZSn3T1EcSncW8bH0TxNp037tHMckAvGrXk7r+9nwqGFcKRqvtWYpA3VFawq2xLdferHj9BrjdMBQjDGGnPgSRLRMotMpMOiWS7kRbtiVMCgYBmQKXaPHjkXtreFG8XJFsCTLV0aV4yTMF5mqqkxHmXm+PZq+qvJf8F0NZollj7AKOrIkTEcw6waeHwu2zD8j+xQP4AjU8SMZZfwnj9Sr5Vc6AFFZHYHr6n9VfSF+puoDcmaU6MLqcOI9qpJmHKe5F2+HhgDlVGDVH60BrjQwGUnw==';/*** 加密提交*/function encryption() {var data = {username: "admin",password: "123456",nickname: "超级管理员",sex: "男",age: "29",telephone: "13111111111",address: "北京市西城区"};// 加密var encrypt = new JSEncrypt();encrypt.setPublicKey(PUBLIC_KEY);var encrypted = encrypt.encrypt(JSON.stringify(data));console.log('加密前数据:%o', data);console.log('加密后数据:%o', encrypted);$.ajax({url: "/test/decryption",type: "POST",contentType: "application/json;charset=utf-8",data: encrypted,success: function (data) {console.log(JSON.stringify(data))}})}/*** 解密数据*/function decryption() {$.ajax({url: "/test/encryption",type: "GET",contentType: "application/json;charset=utf-8",success: function (data) {var decrypt = new JSEncrypt();decrypt.setPrivateKey(PRIVATE_KEY);var relData = decrypt.decrypt(data);console.log('加密前数据:%o', data);console.log('加密后数据:%o', relData);}})}
</script>
</body>
</html>

后台解密

在这里插入图片描述

2024-05-22 15:40:50.778  INFO 5500 --- [nio-8033-exec-3] c.shuibo.advice.DecryptHttpInputMessage  : Encrypted data received:il2zExRKOcC4XMT2TQwSdnejCkPtxOx1K+T5hrsmFmIohxbS8xwXl3O4ypHwSsgKUnAPPAUJV0OnSaNBuoi/KcoeHAjhJb6GugWm/VJCejw0mC0tg3onoPVUOUjRm+lHlymzSXiculpvz8qee+WaKjRRRW//85P9QPSSeKV1HrwJ1AFbT7QNMVpwax8EXX9yrGFPcN1tzpBBN1AyKtWVNcdSvFMSrubE7PAaibvoT0GKjhw/J52UhKzX96cc6A26fz64FkvGcOZGqlVARdpyXL3Cvqk4/uRKDSE6sUgyZ3rOsLkdXiNVqS0r8zA37IUyFAP3yoPH5Uk7z9mgbhsw2g==,After decryption:{"username":"admin","password":"123456","nickname":"超级管理员","sex":"男","age":"29","telephone":"13111111111","address":"北京市西城区"}

后台加密

在这里插入图片描述

2024-05-22 15:43:17.334  INFO 5500 --- [nio-8033-exec-5] c.s.advice.EncryptResponseBodyAdvice     : Pre-encrypted data:{"address":"北京市西城区","age":29,"nickname":"超级管理员","password":"123456","sex":"男","telephone":"13333333333","username":"admin"}After encryption:HhZx25AZgh+d7MIu0rh07zZam2boxDFNNMO/hWssCsYDR4Qf2+/6Z5KVIQcP3Bf73uGEQD81tRznUasMvYIt1Kt8MAomOhz2GIkauJw1ZwnD03kyLVwlGrFWote3giwj8LiJ4knjlFDbHsYgHN/3PWpCbWIm0IjWgv0T98MZFWSyGOaR+ZBr8ckdQrCAN3XMd3zwICxitQ4aYc0asElTwMybj+8u5p4Jla1WwpJ+VeB7UYXhvNWM06mQK/JwXGrZ/YN3thDUGu1GAxCMtnkIGFk5jNCFzaC8pvAavW4H1WIppO0JFzbrQWcVU2dtr61VKwsn/V3FVGFbG7HmrhZ8yJgGXtzE8eDTBliN/CpOF975BQjQT49i89DYozr76kdDgjIYdLna/9P6ESC9fR2hYqaYKs1kOmiWS+OLwr97Nz+3EViYOCgfdYO/Il6lXMeuGksddBls9m0RWXgKAkxLq6P/UyLM6I3PZk+lkc5YrPg7swaRE3yySRBIzIq1NalELXZ+3yfywbfKhDYrR8dAW7sFbwDkHu3LjqQ7u3cKfYTvxLUK20XgQCr2APWlNnbASkn6/3GXwt3ZeDp9lCl/bXXsX8GiArcRPiV5/Qb8CZJUE2/YpU1haq/J9rPwa8L5y/1O3yLyt/aWQi1r+G/eQbXJzYACqp954My8bNwDVhg=

相关文章:

  • Spring Boot+Debezium:解决 MySQL Binlog监听
  • 出书,是「盖你自己的房子」你知道吗?
  • 清华新突破||新研究揭示多智能体协作的秘密武器
  • springboot + Vue前后端项目(第十一记)
  • ArcGIS中离线发布路径分析服务,并实现小车根据路径进行运动
  • 【Spring Boot】在项目中使用Spring AI
  • Vue.js功能实现博客
  • Golang使用HTTP框架zdpgo_resty实现文件下载
  • [Linux打怪升级之路]-进程和线程
  • Web基础考点
  • vue中axios的使用
  • faster_whisper语音识别
  • jvm的类加载
  • 『USB3.0Cypress』FPGA开发(3)GPIF II短包零包时序分析
  • next.js 服务端组件 -客户端组件
  • 2017前端实习生面试总结
  • DOM的那些事
  • Javascript 原型链
  • PHP CLI应用的调试原理
  • Phpstorm怎样批量删除空行?
  • Python十分钟制作属于你自己的个性logo
  • Redux 中间件分析
  • SSH 免密登录
  • swift基础之_对象 实例方法 对象方法。
  • vue 配置sass、scss全局变量
  • 对象管理器(defineProperty)学习笔记
  • 翻译:Hystrix - How To Use
  • 名企6年Java程序员的工作总结,写给在迷茫中的你!
  • 你真的知道 == 和 equals 的区别吗?
  • 前端临床手札——文件上传
  • 400多位云计算专家和开发者,加入了同一个组织 ...
  • python最赚钱的4个方向,你最心动的是哪个?
  • !!Dom4j 学习笔记
  • # 数仓建模:如何构建主题宽表模型?
  • #我与虚拟机的故事#连载20:周志明虚拟机第 3 版:到底值不值得买?
  • $jQuery 重写Alert样式方法
  • $分析了六十多年间100万字的政府工作报告,我看到了这样的变迁
  • (Matalb时序预测)WOA-BP鲸鱼算法优化BP神经网络的多维时序回归预测
  • (附源码)ssm捐赠救助系统 毕业设计 060945
  • (三)c52学习之旅-点亮LED灯
  • (三)mysql_MYSQL(三)
  • (十)c52学习之旅-定时器实验
  • (推荐)叮当——中文语音对话机器人
  • (一)Thymeleaf用法——Thymeleaf简介
  • (转)【Hibernate总结系列】使用举例
  • (转)Sql Server 保留几位小数的两种做法
  • (转)从零实现3D图像引擎:(8)参数化直线与3D平面函数库
  • (转)一些感悟
  • (轉貼) 寄發紅帖基本原則(教育部禮儀司頒布) (雜項)
  • *p=a是把a的值赋给p,p=a是把a的地址赋给p。
  • .NET Core SkiaSharp 替代 System.Drawing.Common 的一些用法
  • .NET8.0 AOT 经验分享 FreeSql/FreeRedis/FreeScheduler 均已通过测试
  • .net对接阿里云CSB服务
  • .net连接MySQL的方法
  • .sys文件乱码_python vscode输出乱码