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

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.kler.cn/a/231535.html

相关文章:

  • Android集成FCM(Firebace Cloud Messaging )
  • 本地文件如何推送到git仓库
  • ES6进阶知识二
  • 通用定时器---输出比较功能
  • django的model时间怎么转时间戳
  • 深度学习基础练习:代码复现transformer重难点
  • MySQL视图和索引
  • 【Lazy ORM】insert 使用
  • [大厂实践] Netflix容器平台内核panic可观察性实践
  • Qt 常用算法及正则表达式
  • Web课程学习笔记--JavaScript的性能优化-加载和执行
  • 【动态规划】【前缀和】【C++算法】LCP 57. 打地鼠
  • HTML元素的操作
  • 全套军事和民用监听系统
  • 【NLP冲吖~】二、隐马尔可夫模型(Hidden Markov model, HMM)
  • chagpt的原理详解
  • JUnit 5 注解总结与解析
  • 3060ti显卡+cuda12.1+win10编译安装生成fastdeploy的c++与python库
  • 【日志框架】
  • 【JavaEE Spring】Spring 原理
  • C++艺术字头文件:ArtText.h
  • PyTorch深度学习实战(23)——从零开始实现SSD目标检测
  • Debian系统显示中文
  • Unity SRP 管线【第十讲:SRP/URP 图形API】
  • HCIA-HarmonyOS设备开发认证V2.0-3.2.轻量系统内核基础-任务管理
  • shell脚本基础语法(.sh ./ sh bash source shell)