Springboot接口返回参数以及入参RSA加密解密

news2024/10/6 10:28:57

网上有好多通过aop切面以及自定义的RSA工具类进行加密解密的方法,期中的过程繁琐也不好用,博主研究了一天从网上到了超好用的基于Springboot框架实现的接口RSA加密解密方式,通过rsa-encrypt-body-spring-boot实现了对Spring Boot接口返回值、参数值通过注解的方式自动加解密。注意:rsa-encrypt-body-spring-boot是某一个大神写的工具类上传到了maven库中,大家引用即可

一、引入rsa-encrypt-body-spring-boot

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

二、启动类Application中添加@EnableSecurity注解

@SpringBootApplication
@EnableCaching
@MapperScan("com.ujia")
@EnableScheduling
@EnableSecurity
public class RestApplication {
    public static void main(String[] args) {
        SpringApplication.run(RestApplication.class, args);
    }

}

三、在application.yml或者application.properties中添加RSA公钥及私钥

rsa:
  encrypt:
    open: true # 是否开启加密 true  or  false
    showLog: true # 是否打印加解密log true  or  false
    publicKey: # RSA公钥
    privateKey: # RSA私钥

 补充知识:rsa公钥私钥生成命令,在电脑文件夹中打开命令框依次执行

openssl
# 生成私钥
genrsa -out id_rsa_private 2048
# 生成私钥(把RSA私钥转换成PKCS8格式)
pkcs8 -topk8 -inform PEM -in id_rsa_private -outform pem -nocrypt -out id_rsa_private_pkcs
# 生成公钥
rsa -in id_rsa_private -pubout -out id_rsa_public.pub

重点注意:生成的私钥一定要转成pkcs8,否则会报错

Exception in thread "main" java.security.spec.InvalidKeySpecException: java.security.InvalidKeyException: IOException : algid parse error, not a sequence
	at sun.security.rsa.RSAKeyFactory.engineGeneratePrivate(RSAKeyFactory.java:217)
	at java.security.KeyFactory.generatePrivate(KeyFactory.java:372)
	at com.hashland.otc.common.util.coder.RSACoder.sign(RSACoder.java:42)
	at com.hashland.otc.common.util.coder.RSACoder.main(RSACoder.java:306)
Caused by: java.security.InvalidKeyException: IOException : algid parse error, not a sequence
	at sun.security.pkcs.PKCS8Key.decode(PKCS8Key.java:352)
	at sun.security.pkcs.PKCS8Key.decode(PKCS8Key.java:357)
	at sun.security.rsa.RSAPrivateCrtKeyImpl.<init>(RSAPrivateCrtKeyImpl.java:91)
	at sun.security.rsa.RSAPrivateCrtKeyImpl.newKey(RSAPrivateCrtKeyImpl.java:75)
	at sun.security.rsa.RSAKeyFactory.generatePrivate(RSAKeyFactory.java:316)
	at sun.security.rsa.RSAKeyFactory.engineGeneratePrivate(RSAKeyFactory.java:213)
	... 3 more

四、对返回值进行加密

@Encrypt
@GetMapping("/encryption")
public TestBean encryption(){
    TestBean testBean = new TestBean();
    testBean.setName("shuibo.cn");
    testBean.setAge(18);
    return testBean;
}

五、对参数进行解密

@Decrypt
@PostMapping("/decryption")
public String Decryption(@RequestBody TestBean testBean){
    return testBean.toString();
}

返回结果加密——运行结果:

 

 

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

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

相关文章

MySQL库表操作

目录 1、SQL语句分类 2、书写规范 &#xff08;二&#xff09;关键字不区分大小写 &#xff08;三&#xff09;字符串和日期时间常数要用单引号 &#xff08;四&#xff09;单词之间需要使用半角空格或者换行符进行分隔 &#xff08;五&#xff09;注释 3、库操作 创建…

关于PHP 使用 Elastic Search8的相关经历

你好&#xff01; 如果你也是第一次使用ES8和PHP对接使用&#xff0c;这里或许有一些心得可以为你解决一些问题。 本地环境所需工具 windows 版本搭建 Elastic Search 如下图&#xff0c;通过官网下载一个windows版本的Elastic Search 执行.bat文件即可启动 https://localhos…

基于OpenCV 和 Python 实现车牌检测--附免费源码

文末提供免费的源代码下载链接 车牌检测是使用计算机视觉技术自动检测和识别图像或视频流中的车牌/车牌的过程。 此任务在许多应用中都很有用,例如交通管理、自动收费和停车控制。 车牌检测基本上分为两个任务: 车牌检测:这是指识别图像或视频帧中车牌位置的过程。这涉…

优化篇--vxe-table 大数据表格替代方案

解决数据量过大及内容复杂时造成的Table渲染滚动的卡顿问题 vxe-table官方文档 npm install xe-utils vxe-tablelegacyvex-table.vue <template><div class"page"><vxe-gridclass"mytable"ref"xGrid2"v-bind"gridOptions2&…

langchain系列1- langchain-ChatGLM

源码阅读 1 服务启动 (demo.queue(concurrency_count3).launch(server_name0.0.0.0,server_port7860,show_apiFalse,shareFalse,inbrowserFalse))这部分代码使用了 Gradio 库提供的两个函数&#xff1a;queue 和 launch。 在这里&#xff0c;demo 是一个 Interface 类的实例…

win go vscode安装配置-智能提示

win go vscode安装配置-智能提示 0.前提 go1.17.1之后不允许go get安装库 vscode是免费的go开发工具&#xff0c;想要代码智能提示 go推荐go mod和go install&#xff0c;不推荐GOPATH了 1.安装步骤 [1] vscode安装-百度一堆 [2] go安装-从官网 https://go.dev/dl/ 下载win 6…

SpringBoot——在开发阶段对表现层进行测试

在开发阶段对表现层进行测试 之前在做测试的时候&#xff0c;我们对Dao层做了测试&#xff0c;对Service层做了测试&#xff0c;但是在测试表现层的时候&#xff0c;我们并不是在测试类中启动的Web端口&#xff0c;还是直接启动了引导类&#xff0c;并在浏览器中打开本地网址或…

优思学院|带你轻松驾驭六西格玛:解答大家的五大疑问

在业务改进和质量管理领域&#xff0c;六西格玛被公认为一种卓越的方法和工具&#xff0c;可以帮助企业实现接近完美的质量水平。无论是制造业、医疗保健、金融还是服务行业&#xff0c;六西格玛都被广泛采用&#xff0c;并取得了令人瞩目的成果。它不仅可以降低缺陷和错误&…

【IoT物联网】IoT小程序在展示中央空调采集数据和实时运行状态上的应用

利用前端语言实现跨平台应用开发似乎是大势所趋&#xff0c;跨平台并不是一个新的概念&#xff0c;“一次编译、到处运行”是老牌服务端跨平台语言Java的一个基本特性。随着时代的发展&#xff0c;无论是后端开发语言还是前端开发语言&#xff0c;一切都在朝着减少工作量&#…

基于知识图谱的《红楼梦》人物关系可视化及问答系统(含码源):命名实体识别、关系识别、LTP简单教学

基于知识图谱的《红楼梦》人物关系可视化及问答系统&#xff08;含码源&#xff09;&#xff1a;命名实体识别、关系识别、LTP简单教学 文件树: app.py是整个系统的主入口templates文件夹是HTML的页面 |-index.html 欢迎界面 |-search.html 搜索人物关系页面 |-all_relation.…

JMeter参数化(6)

JMeter参数化 一、JMeter用户参数1、作用2、案例1&#xff1a;百度搜索接口&#xff1a;使用用户参数模拟不同线程操作时&#xff0c;搜索不同的数据 二、用户自定义变量案例1&#xff1a;演示用户定义的变量具有全局性案例2&#xff1a;使用用户定义的变量&#xff0c;分组管理…

基于Java的电影购票系统的设计与实现(源码+文档+数据库)

本系统是一个网上电影售票系统&#xff0c;可以为用户提供方便的在线订票环境。主要实现了用户注册、登录、查询、订购电影票、管理已订购电影票等功能。通过后台管理模块可以实现对用户、播放厅、电影、影片安排、电影票等的管理等功能。本系统以IntelliJ IDEA 作为开发环境&a…

2.3 Web应用 -- 2. HTTP 连接

2.3 Web应用 -- 2. HTTP 连接 HTTP连接的两种类型非持久性连接响应时间分析与建模持久性HTTP HTTP连接的两种类型 非持久性连接(Nonpersistent HTTP) 每个TCP连接最多允许传输一个对象HTTP 1.0版本使用非持久性连接 持久性连接(Persistent HTTP) 每个TCP连接允许传输多个对象H…

vue3项目创建部署

别名联想路径提示&#xff1a; Element-plus默认的颜色是蓝色&#xff0c;以下修改成我们自己的主题色&#xff1a; css预处理语言 “scss是一种css预处理语言,是一个css的扩展,它在css语法的基础上,允许您使用变量,嵌套规则,混合,导入,继承等功能,使得css更加强大和优雅,而…

Jetson Orin Nano Developer Kit

Jetson Orin Nano Developer Kit包括Jetson Orin Nano 8GB模块&#xff0c;该模块具有NVIDIA安培GPU(具有1024个CUDA内核和32个第三代张量内核)和6核ARM CPU&#xff0c;能够运行多个并发AI应用程序管道并提供高推断性能。 开发套件载体板支持所有Jetson Orin Nano和Orin NX模块…

2023年如何通过8个步骤创建社交媒体内容策略

在创建成功的社交媒体内容策略时&#xff0c;感觉有无穷无尽的选项和平台可供选择。但不要因此而不知所措&#xff0c;因为只要稍作规划并发挥大量创造力&#xff0c;您就可以制定有助于提升品牌知名度、提高客户参与度和推动销售的战略。 目录 定义社交媒体内容配方的八个…

基于.Net Core实现的飞书所有文档一键导出服务(支持多系统)

feishu-doc-export 一个支持Windows、Mac、Linux系统的飞书文档一键导出服务&#xff0c;仅需一行命令即可将飞书知识库的全部文档同步到本地电脑。导出速度嘎嘎快&#xff0c;实测700多个文档导出只需25分钟&#xff0c;且程序是后台挂机运行&#xff0c;不影响正常工作。 动…

python爬虫爬取top250中排名、评分、导演等展示可视化界面

源代码4千字报告 需要源代码数据库可视化数据4千字报告加我qq

基于matlab评估单相机校准的准确性(附源码)

一、前言 相机校准是使用特殊校准模式的图像估计相机参数的过程。参数包括相机内在系数、失真系数和相机外在系数。校准相机后&#xff0c;有几种方法可以评估估计参数的准确性&#xff1a; 绘制相机的相对位置和校准模式 计算重投影误差 计算参数估计误差 二、校准相机 …

Spring Boot 数据访问框架介绍及使用

Spring Boot 数据访问框架介绍及使用 Spring Boot 是一个流行的 Java 应用程序框架&#xff0c;它提供了许多工具和库&#xff0c;帮助开发人员快速构建高效的应用程序。其中&#xff0c;Spring Boot 数据访问框架是其中一个重要的组件&#xff0c;它提供了许多不同的选项&…