Springboot项目报文加密(AES、RSA、Filter动态加密)

Springboot项目报文加密(AES、RSA、Filter动态加密)

  • 一、痛点
    • 1.1、初版报文加密
  • 二、前期准备
    • 2.1、AES加密
    • 2.2、RSA加密
    • 2.3、国密算法概述
    • 2.4、国密SM2
    • 2.5、国密SM3
    • 2.6、国密SM4
    • 2.7、JAVA中的拦截器、过滤器
    • 2.8、请求过滤器
    • 2.9、响应过滤器
    • 2.10、登录验证码
    • 2.11、BCrypt非对称加密
  • 三、逻辑整理
    • 3.1、建立前后端连接
    • 3.2、登录接口特殊处理
    • 3.3、接口加解密模式
    • 3.4、模式逻辑说明
  • 四、关键代码
    • 4.1、会话通知
    • 4.2、登录
    • 4.3、接口处理
  • 五、接口样例
    • 5.1、会话通知
    • 5.2、登录
    • 5.3、普通接口
    • 5.4、导入接口
    • 5.5、导出接口
  • 六、其他

最近一直在处理加密相关问题,对秘钥进行复杂化处理、进程非固定化逻辑处理,等等一些简单处理方式,还是解决不了cookie存储秘钥等问题。
于是在原有方式上进行了改进,优化了加密的模式来改进这一问题。
目的是减少前端存储固定秘钥不安全等带来的一系列问题。

一、痛点

在项目加密环节,如仅采用秘钥加密,一但秘钥泄露,那每一次的会话及请求的报文,则无异于暴露在外,存在安全隐患。

1.1、初版报文加密

阅读本篇博客前建议先阅读初版内容:
Springboot项目报文加密(采用AES、RSA动态加密策略):https://blog.csdn.net/qq_38254635/article/details/129275971

二、前期准备

在处理该问题前,需先了解一些加密,如AES、RSA,国密SM2、SM3、SM4,Filter等。

2.1、AES加密

AES加密:https://blog.csdn.net/qq_38254635/article/details/129622075

2.2、RSA加密

RSA加密:https://blog.csdn.net/qq_38254635/article/details/129623413

2.3、国密算法概述

国密:https://blog.csdn.net/qq_38254635/article/details/131801527

2.4、国密SM2

国密SM2:https://blog.csdn.net/qq_38254635/article/details/131810661

2.5、国密SM3

国密SM3:https://blog.csdn.net/qq_38254635/article/details/131810696

2.6、国密SM4

国密SM4:https://blog.csdn.net/qq_38254635/article/details/131810715

2.7、JAVA中的拦截器、过滤器

JAVA中的拦截器、过滤器:https://blog.csdn.net/qq_38254635/article/details/131201519

2.8、请求过滤器

请求过滤器:https://blog.csdn.net/qq_38254635/article/details/136041159

2.9、响应过滤器

响应过滤器:https://blog.csdn.net/qq_38254635/article/details/136041183

以及登录相关内容:

2.10、登录验证码

登录验证码:https://blog.csdn.net/qq_38254635/article/details/129735679

2.11、BCrypt非对称加密

BCrypt非对称加密:https://blog.csdn.net/qq_38254635/article/details/129746320

三、逻辑整理

3.1、建立前后端连接

前端发送通知,告诉后端需要建立连接请求。

在这里插入图片描述

3.2、登录接口特殊处理

区别登录接口与其他接口。

在这里插入图片描述

3.3、接口加解密模式

接口加解密模式。
在这里插入图片描述

3.4、模式逻辑说明

此模式, Web端 仅需存储 RSA公钥 Server端 仅需存储 RSA私钥

每次开始:

Web端 随机生成 AES秘钥 ,并将 报文 采用 AES秘钥 加密得到 webCipherText ,且将 AES秘钥 采用 RSA公钥 加密得到 cipherKey ,将两个参数传给 Server端

Server端 采用 RSA私钥 解密 cipherKey 得到 AES秘钥 ,再用 AES秘钥 解密 webCipherText 得到 报文

Server端 进行业务逻辑处理。

Server端 将返回的 报文 采用 AES秘钥 加密得到 ServerCipherText ,返回给 Web端

Web端 采用 AES秘钥 解密 ServerCipherText 得到 报文

请求结束。

四、关键代码

4.1、会话通知

会话通知:生成秘钥对,后端Redis及session存储

public Map<String, String> notice() throws Exception{String uk = UniqueUtil.getUniqueKey();Map<String, String> keyPair = RSAUtils.generateKeyPair();RedisUtil redisUtil = SpringContextUtils.getBean(RedisUtil.class);redisUtil.hPutObject(EncryptEnum.Redis.RSA_PATH + uk, EncryptEnum.Redis.RSA_KEY, keyPair

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

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

相关文章

基于Java (spring-boot)的学生成绩管理系统

一、项目介绍 (1) 课程信息的管理&#xff0c;包括课程信息的条件查询、录入、修改和删除。 (2) 课程表的管理&#xff0c;包括排课、录入课程表、修改课程表。 (3) 用户信息管理。包括对系统管理员、教师和学生的信息进行维护管理&#xff0c;可以新增、修改、删除和条件分…

电动汽车雷达技术概述 —— FMCW干扰问题

一、电动汽车上有多少种传感器&#xff1f; 智能电动汽车&#xff08;包括自动驾驶汽车&#xff09;集成了大量的传感器来实现高级驾驶辅助系统&#xff08;ADAS&#xff09;、自动驾驶功能以及车辆状态监测等功能。以下是一份相对全面的智能电动汽车中可能使用到的传感器列表…

AUTOSAR CP--chapter4从一个VCU需求开始Autosar的工程创建

从一个VCU需求开始Autosar的工程创建 1、VCU需求2、Autosar工作任务之间的关系&#xff1a;2.1、工程阶段配置阶段集成阶段调试阶段 1、VCU需求 通过建立整车控制器的工程&#xff0c;搭建Autosar工程的框架&#xff0c;开发的软件是搭载于微控制上运行的。 首先&#xff0c;看…

ArcGIS的UTM与高斯-克吕格投影分带要点总结

UTM&#xff08;通用横轴墨卡托投影、等角横轴割椭圆柱投影&#xff09;投影分带投影要点&#xff1a; 1&#xff09;UTM投影采用6度分带 2&#xff09;可根据公式计算&#xff0c;带数&#xff08;经度整数位/6&#xff09;的整数部分31 3&#xff09;北半球地区&#xff0…

家政小程序系统开发:从构思到实现

随着科技的快速发展&#xff0c;移动互联网已经深入到我们生活的方方面面。特别是在家政服务领域&#xff0c;传统的服务方式已经不能满足现代人的需求。因此&#xff0c;开发一款家政小程序系统显得尤为重要。本文将介绍家政小程序系统的开发过程&#xff0c;包括需求分析、设…

数据结构——D/二叉树

&#x1f308;个人主页&#xff1a;慢了半拍 &#x1f525; 创作专栏&#xff1a;《史上最强算法分析》 | 《无味生》 |《史上最强C语言讲解》 | 《史上最强C练习解析》 &#x1f3c6;我的格言&#xff1a;一切只是时间问题。 ​ 1.树概念及结构 1.1树的概念 树是一种非线性的…

最新话费充值系统源码,附带系统安装教程

搭建教程 亲测环境&#xff1a;PHP7.0MySQL5.6 PHP扩展安装&#xff1a;sg11 数据库配置文件路径&#xff1a;/config/database.php 伪静态设置为thinkphp 后台地址&#xff1a;/admin 账号密码&#xff1a;admin/123456

力扣面试题 05.06. 整数转换(位运算)

Problem: 面试题 05.06. 整数转换 文章目录 题目描述思路及解法复杂度Code 题目描述 思路及解法 1.通过将两个数进行异或操作求出两个数中不同的位(不同的位异或后为二进制1); 2.统计异或后不同的位的个数(即异或后二进制为1的个数) 复杂度 时间复杂度: O ( 1 ) O(1) O(1) 空间…

实战分享:SpringBoot在创新创业项目管理中的应用

✍✍计算机编程指导师 ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡ Java实战 |…

Python操作Word表格对齐、单元格对齐

通过Table的alignment可以设置表格居左对齐、居中对齐、居右对齐。通过Cell的vertical_alignment可以设置垂直位置。通过单元格里段落的alignment可以设置文本的左右对齐方式。 import docx from docx.enum.table import WD_TABLE_ALIGNMENT, WD_CELL_VERTICAL_ALIGNMENT from…

Compose | UI组件(十四) | Navigation-Data - 页面导航传递数据

文章目录 前言传参流程实例说明普通方式传值定义接受参数格式定义接受参数类型获取参数传入参数传参和接受参数效果图 结合 ViewModel 传递参数定义ViewModel在 navigation 定义 ViewModel 实例&#xff0c;并且传入 LoginScreen传入输入框中的值&#xff0c;并且跳转传值获取值…

浅谈bypass Etw

文章目录 c#ExecuteAssemblybypass etw c# loader 一种是通过反射找到指定空间的类中method进行Invoke 另一种是通过EntryPoint.Invoke加载 反射加载 Assembly.Load()是从String或AssemblyName类型加载程序集&#xff0c;可以读取字符串形式的程序集 Assembly.LoadFrom()从指定…