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=

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/332054.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

电表远传抄表是什么?

1.电表远传抄表&#xff1a;简述 电表远传抄表&#xff0c;又称为远程控制自动抄表系统&#xff0c;是电力行业的智能化技术运用&#xff0c;它通过无线或通信网络技术&#xff0c;完成对电表数据信息的远程收集解决。此项技术不仅提升了抄水表高效率&#xff0c;降低了人工偏…

Java订餐系统源码 springboot点菜系统源码

Java订餐系统源码 springboot点菜系统源码 源码下载地址&#xff1a;https://download.csdn.net/download/xiaohua1992/89341358 功能介绍&#xff1a; 前台登录&#xff1a;前台登录&#xff1a; ①首页&#xff1a;菜品信息推荐、菜品信息展示、查看更多 ②菜品信息&…

【剑指offer】2.2编程语言(p22-p25)——面试题1:string赋值运算函数

本节博客是对阅读剑指offer后的笔记归纳总结&#xff0c;有需要借鉴即可。 目录 1.p21-p25内容概要2.询问语法概念常考&#xff1a;CPP关键字理解举例&#xff1a;sizeof空类 3.分析代码举例&#xff1a;类中拷贝构造的无限递归问题 4.写代码常考点&#xff1a;类内成员函数、迭…

keycloakAsana SSO对接配置

说明&#xff1a;Keycloak与Asana单点登录对接&#xff0c;Keycloak做IDP&#xff0c;Asana做SP&#xff1b; 一、环境信息 操作系统&#xff1a;ubuntu keycloak&#xff1a;21.1.2 Asana enterprise&#xff1b;更新apt软件包索引&#xff1a; sudo apt update检查是否已安…

数组-最接近给出数字的三数之和

题目描述 解题思路 这里使用三层for循环&#xff0c;暴力解法穷举所有三个数和的可能性&#xff0c;注意三层循环里的索引不要重复。 代码实现 import java.util.*;public class Solution {/*** 代码中的类名、方法名、参数名已经指定&#xff0c;请勿修改&#xff0c;直接返…

Introduction of Internet 计算机网络概述

计算机网络的概念 计算机网络的定义&#xff1a; 多台独立的计算机通过通信线路实现资源共享的计算机系统 计算机网络的组成 资源子网&#xff1a;提供共享的软件资源和硬件资源 通信子网&#xff1a;提供信息交换的网络结点和通信线路 计算机网络类型 按照拓扑排序 星型…

Transformer详解(1)-结构解读

Transormer块主要由四个部分组成&#xff0c;注意力层、位置感知前馈神经网络、残差连接和层归一化。 1、注意力层(Multi-Head Attention) 使用多头注意力机制整合上下文语义&#xff0c;它使得序列中任意两个单词之间的依赖关系可以直接被建模而不基于传统的循环结构&#…

【C语言】八进制、十六进制

前言 在我们日常生活中使用的数往往是十进制的&#xff0c;而当我们学习C语言后我们会接触到许多不同的进制并且时常需要去思考与使用这些不同的进制&#xff08;尤其是2的幂相关的进制&#xff0c;因为这种计数系统比十进制更接近于计算机的二进制系统&#xff09;&#xff0…

【Linux初探】:解锁开源世界的神秘钥匙

文章目录 &#x1f680;一、了解Linux&#x1f525;二、Linux 的发行版❤️三、Linux应用领域&#x1f4a5;四、Linux vs Windows & mac &#x1f680;一、了解Linux Linux是一种自由、开放源代码的操作系统&#xff0c;它的内核由芬兰计算机科学家Linus Torvalds在1991年创…

手把手从0到1教你做STM32+FreeRTOS智能家居--第10篇之ASR-PRO语音识别模块

前言 先看实验效果&#xff0c;通过ASR-PRO语音智能识别控制模块&#xff0c;来控制STM32单片机实现对应的控制功能。因为后台好多小伙伴私信问用的是什么语音模块&#xff0c;并且很少在网上看到如何使用此模块相关的文章&#xff0c;所以我将会在本篇文章详细介绍一下此模块…

HTML蓝色爱心

目录 写在前面 HTML入门 完整代码 代码分析 运行结果 系列推荐 写在后面 写在前面 最近好冷吖&#xff0c;小编给大家准备了一个超级炫酷的爱心&#xff0c;一起来看看吧&#xff01; HTML入门 HTML全称为HyperText Markup Language&#xff0c;是一种标记语言&#…

【wiki知识库】01.wiki知识库前后端项目搭建(SpringBoot+Vue3)

&#x1f4dd;个人主页&#xff1a;哈__ 期待您的关注 &#x1f33c;环境准备 想要搭建自己的wiki知识库&#xff0c;要提前搭建好自己的开发环境&#xff0c;后端我使用的是SpringBoot&#xff0c;前端使用的是Vue3&#xff0c;采用前后端分离的技术实现。同时使用了Mysql数…

浪潮信息IPF24:AI+时代,创新驱动未来,携手共创智慧新纪元

如今&#xff0c;数字化时代的浪潮席卷全球&#xff0c;人工智能已经成为推动社会进步的重要引擎。浪潮信息IPF24作为行业领先的AI技术盛会&#xff0c;不仅为业界提供了交流合作的平台&#xff0c;更在激发创新活力、拓展发展路径、加速AI技术落地等方面发挥了重要作用。 升级…

【调和级数】100321. 优质数对的总数 II

本文涉及知识点 调和级数 质数、最大公约数、菲蜀定理 LeetCode100321. 优质数对的总数 II 给你两个整数数组 nums1 和 nums2&#xff0c;长度分别为 n 和 m。同时给你一个正整数 k。 如果 nums1[i] 可以被 nums2[j] * k 整除&#xff0c;则称数对 (i, j) 为 优质数对&#…

手机版AI写作软件哪个好用?5款AI写作软件分享

在这个快节凑的时代&#xff0c;人们对于高效、便捷的创作方式很是追求。尤其是在人工智能技术发展迅速的今天&#xff0c;AI写作软件的出现&#xff0c;让很多自媒体创作者都会想到在手机上面进内容创作&#xff0c;这样不仅能提高工作效率&#xff0c;而且工作的自由度会更高…

ciscn2024(上传一下,有侵权什么的问题的话联系删除)

Web Simple_php 这个Simple_php一点儿也不Simple (⋟﹏⋞) 源码放这儿了&#xff1a; <?phpini_set(open_basedir, /var/www/html/); error_reporting(0);if(isset($_POST[cmd])){$cmd escapeshellcmd($_POST[cmd]); if (!preg_match(/ls|dir|nl|nc|cat|tail|more|flag…

Java中IO流类的体系

Java为我们提供了多种多样的IO流&#xff0c;我们可以根据不同的功能及性能要求挑选合适的IO流&#xff0c;如图所示&#xff0c;为Java中IO流类的体系。 从上图发现&#xff0c;很多流都是成对出现的&#xff0c;比如&#xff1a; FileInputStream/FileOutputStream&#xff0…

vue3的api风格

Vue的组件有两种不同的风格&#xff1a;组合式API 和 选项式API 选项式api 选项式API&#xff0c;可以用包含多个选项的对象来描述组件的逻辑&#xff0c;如&#xff1a;data&#xff0c;methods&#xff0c;mounted等。 组合式api setup&#xff1a;是一个标识&#xff0c;告…

【全开源】答题考试系统源码(FastAdmin+ThinkPHP+Uniapp)

答题考试系统源码&#xff1a;构建高效、安全的在线考试平台 引言 在当今数字化时代&#xff0c;在线考试系统已成为教育机构和企业选拔人才的重要工具。一个稳定、高效、安全的答题考试系统源码是构建这样平台的核心。本文将深入探讨答题考试系统源码的关键要素&#xff0c;…

民宿bug

前端 后端 1 订单管理 订单日期已过&#xff0c;状态没有变成已完成