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

news2024/9/22 1:28:09

废话不多说,直接上代码

引入依赖

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

配置文件

rsa:
  encrypt:
    # 是否开启加密
    open: true
    # 是否打印加解密log
    showLog: 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.coloradmin.cn/o/1696625.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JAVA -- > 初识JAVA

初始JAVA 第一个JAVA程序详解 public class Main {public static void main(String[] args) {System.out.println("Hello world");} }1.public class Main: 类型,作为被public修饰的类,必须与文件名一致 2.public static 是JAVA中main函数准写法,记住该格式即可 …

【how2j java应用】

[Log4j] 演示如何使用log4j进行日志输出 1.导入jar包 2.使用Log4j 3.代码说明 LOG4J 配置讲解 在src目录下添加log4j.properties文件 说明 log4j.xml 除了使用log4j.properties&#xff0c;也可以使用xml格式进行配置。 [junit] 通过main方法来进行测试&#xff1a;如果…

5.20Git

版本控制工具Git&#xff0c;其他的工具还有SVN 共享代码&#xff0c;追溯记录&#xff0c;存储.c文件 Git实现的功能&#xff1a;回溯&#xff08;以前某个时间节点的数据情况&#xff09;共享&#xff08;大家共享修改&#xff09; Git&#xff1a;80% SVN&#xff…

MySQL——MySQL目录结构

MySQL安装完成后&#xff0c;会在磁盘上生成一个目录&#xff0c;该目录被称为MySQL的安装目录。在MySQL的安装目录中包含了启动文件、配置文件、数据库文件和命令文件等。 下面对 MySQL 的安装目录进行详细讲解 (1)bin 目录 : 用于放置一些可执行文件,如 mysql.exe、mysqld. …

数组-下一个排列

一、题目描述 二、解题思路 1.反向遍历当前排列&#xff0c;比如 排列A[a,b,c,d,e,f...] &#xff0c;当遍历到e时&#xff0c;说明以 a,b,c,d,e为前缀的排列中不存在A排列的下一个排列。 2.把e&#xff08;位置设为idx&#xff09;和后面的元素作比较&#xff1a; 2.1 如果有…

网络模型—BIO、NIO、IO多路复用、信号驱动IO、异步IO

一、用户空间和内核空间 以Linux系统为例&#xff0c;ubuntu和CentOS是Linux的两种比较常见的发行版&#xff0c;任何Linux发行版&#xff0c;其系统内核都是Linux。我们在发行版上操作应用&#xff0c;如Redis、Mysql等其实是无法直接执行访问计算机硬件(如cpu&#xff0c;内存…

LabVIEW步开发进电机的串口控制程序

LabVIEW步开发进电机的串口控制程序 为了提高电机控制的精确度和自动化程度&#xff0c;开发一种基于LabVIEW的实时、自动化电机串口控制程序。利用LabVIEW软件的图形化编程特性&#xff0c;通过串口实时控制电机的运行参数&#xff0c;实现电机性能的精准控制与评估。 系统组…

Spring MVC+mybatis 项目入门:旅游网(三)用户注册——控制反转以及Hibernate Validator数据验证

个人博客&#xff1a;Spring MVCmybatis 项目入门:旅游网&#xff08;三&#xff09;用户注册 | iwtss blog 先看这个&#xff01; 这是18年的文章&#xff0c;回收站里恢复的&#xff0c;现阶段看基本是没有参考意义的&#xff0c;技术老旧脱离时代&#xff08;2024年辣铁铁&…

《Ai学习笔记》自然语言处理 (Natural Language Processing):机器阅读理解-基础概念解析01

自然语言处理 (Natural Language Processing)&#xff1a; NLP四大基本任务 序列标注&#xff1a; 分词、词性标注 分类任务&#xff1a; 文本分类、情感分析 句子关系&#xff1a;问答系统、对话系统 生成任务&#xff1a;机器翻译、文章摘要 机器阅读理解的定义 Machi…

创建带有公共头部的Electron窗口

创建带有公共头部的Electron窗口 创建一个公共头部的html文件 1.我们在项目根目录创建一个名为app-header的文件夹 2.在app-header创建一个文件名为header.html的文件 结构如下&#xff1a; 基本结构和脚本如下 <body> <div class"header"><div c…

Node Video Pro v6.40.0,媲美电脑的专业手机剪辑APP

软件介绍 Node Video Pro&#xff0c;作为一款高端的视频编辑与共享平台&#xff0c;为用户提供了一套完备的视频制作工具集。该应用集成了视频剪辑、视觉特效增强、以及音乐背景选择等功能&#xff0c;允许用户在移动设备上实施专业级别的视频处理。它所具备的高级功能配合其…

Go使用结构体实现类(面向对象)

前置 package main ​ import ("fmt" ) ​ // 矩形结构体 type Rectangle struct {Length intWidth int } ​ // 计算矩形面积 func (r *Rectangle) Area() int {return r.Length * r.Width } ​ func main() {r : Rectangle{4, 2}// 调用 Area() 方法&#xff0c;计…

SpringBoot运维篇(打包,多环境,日志)

文章目录 一、SpringBoot程序的打包与运行二、配置高级三、多环境开发四、日志 一、SpringBoot程序的打包与运行 刚开始做开发学习的小伙伴可能在有一个知识上面有错误的认知&#xff0c;我们天天写程序是在Idea下写的&#xff0c;运行也是在Idea下运行的。 ​但是实际开发完成…

springboot vue 开源 会员收银系统 (4) 门店模块开发

前言 完整版演示 前面我们对会员系统 springboot vue 开源 会员收银系统 (3) 会员管理的开发 实现了简单的会员添加 下面我们将从会员模块进行延伸 门店模块的开发 首先我们先分析一下常见门店的管理模式 常见的管理形式为总公司 - 区域管理&#xff08;若干个门店&#xff…

打造有情感的AI智能体-情感问答

目录 文心智能体平台简介 情感问答智能体介绍 优势1主动提问深入分析你的困扰&#xff0c;合理建议 优势2多次主动提问&#xff0c;引导用户补全信息。 优势3整合多种强大工具 最近发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c…

勒索软件分析_Conti

0. Conti介绍 勒索软件即服务&#xff08;Ransomware as a Service&#xff0c;RaaS&#xff09;变体 Conti 推出还不到两年&#xff0c;已经进行了第七次迭代。Conti被证明是一种敏捷而熟练的恶意软件威胁&#xff0c;能够自主和引导操作&#xff0c;并具有无与伦比的加密速度…

今日早报 每日精选15条新闻简报 每天一分钟 知晓天下事 5月26日,星期日

每天一分钟&#xff0c;知晓天下事&#xff01; 2024年5月26日 星期日 农历四月十九 1、 医保局&#xff1a;支持将符合条件的村卫生室纳入医保定点&#xff0c;方便农村居民就医。 2、 网传养老金储备严重不足&#xff1f;央视辟谣&#xff1a;这笔钱二十多年来从未动用过&a…

SAP HCM WPBP的几个变量含义

WPBP起源 WPBP是SAP HCM的主数据的集合内表,集合、内表这两个名词如何理解,集合就是多个主数据的汇总,内表是ABAP的几个数据结构,就和我们EXCEL的多行一行。 wpbp数据来源 WPBP的主数据来源于SAP HCM 0000、0001、0007、0027、0008信息类型的汇总,SAP HCM是以时间轴为核心…

Linux/Ubuntu 中安装 ZeroTier,实现内网穿透,2分钟搞定

相信很多人都有远程连接家中设备的需求&#xff0c;如远程连接家中的NAS、Windows等服务&#xff0c;所以会涉及到一个内网穿透工具的使用&#xff0c;如果没有公网IP的情况下&#xff0c;推荐大家使用ZeroTier&#xff0c;这是一款强大的内网穿透工具。 mac和windows版的操作…

Python实现SMA黏菌优化算法优化随机森林分类模型(RandomForestClassifier算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 黏菌优化算法&#xff08;Slime mould algorithm&#xff0c;SMA&#xff09;由Li等于2020年提出&…