首页 > 其他分享 >SpringBoot 快速实现 api 加密

SpringBoot 快速实现 api 加密

时间:2024-03-26 10:58:43浏览次数:21  
标签:公钥 私钥 SpringBoot RSA 传递 api 消息 加密

在项目中,为了保证数据的安全,我们常常会对传递的数据进行加密。常用的加密算法包括对称加密(AES)和非对称加密(RSA),博主选取码云上最简单的API加密项目进行下面的讲解。

https://gitee.com/isuperag/rsa-encrypt-body-spring-boot

项目介绍

该项目使用RSA加密方式对API接口返回的数据加密,让API数据更加安全。别人无法对提供的数据进行破解。Spring Boot接口加密,可以对返回值、参数值通过注解的方式自动加解密 。

什么是RSA加密

首先我们当然是了解RSA加密

RSA加密是一种非对称加密。可以在不直接传递密钥的情况下,完成解密。这能够确保信息的安全性,避免了直接传递密钥所造成的被破解的风险。是由一对密钥来进行加解密的过程,分别称为公钥和私钥。两者之间有数学相关,该加密算法的原理就是对一极大整数做因数分解的困难性来保证安全性。通常个人保存私钥,公钥是公开的(可能同时多人持有)。

图片

举例子大法

加密和签名都是为了安全性考虑,但略有不同。常有人问加密和签名是用私钥还是公钥?其实都是对加密和签名的作用有所混淆。简单的说,加密是为了防止信息被泄露,而签名是为了防止信息被篡改。这里举2个例子说明。

「第一个场景:」战场上,B要给A传递一条消息,内容为某一指令。

RSA的加密过程如下:

  • A生成一对密钥(公钥和私钥),私钥不公开,A自己保留。公钥为公开的,任何人可以获取。

  • A传递自己的公钥给B,B用A的公钥对消息进行加密。

  • A接收到B加密的消息,利用A自己的私钥对消息进行解密。

在这个过程中,只有2次传递过程,第一次是A传递公钥给B,第二次是B传递加密消息给A,即使都被敌方截获,也没有危险性,因为只有A的私钥才能对消息进行解密,防止了消息内容的泄露。

「第二个场景:」A收到B发的消息后,需要进行回复“收到”。

RSA签名的过程如下:

  • A生成一对密钥(公钥和私钥),私钥不公开,A自己保留。公钥为公开的,任何人可以获取。

  • A用自己的私钥对消息加签,形成签名,并将加签的消息和消息本身一起传递给B。

  • B收到消息后,在获取A的公钥进行验签,如果验签出来的内容与消息本身一致,证明消息是A回复的。

在这个过程中,只有2次传递过程,第一次是A传递加签的消息和消息本身给B,第二次是B获取A的公钥,即使都被敌方截获,也没有危险性,因为只有A的私钥才能对消息进行签名,即使知道了消息内容,也无法伪造带签名的回复给B,防止了消息内容的篡改。

但是,综合两个场景你会发现,第一个场景虽然被截获的消息没有泄露,但是可以利用截获的公钥,将假指令进行加密,然后传递给A。第二个场景虽然截获的消息不能被篡改,但是消息的内容可以利用公钥验签来获得,并不能防止泄露。所以在实际应用中,要根据情况使用,也可以同时使用加密和签名,比如A和B都有一套自己的公钥和私钥,当A要给B发送消息时,先用B的公钥对消息加密,再对加密的消息使用A的私钥加签名,达到既不泄露也不被篡改,更能保

标签:公钥,私钥,SpringBoot,RSA,传递,api,消息,加密
From: https://blog.csdn.net/wjianwei666/article/details/137039603

相关文章

  • .net webapi 后端服务收到时间差8小时
    前端使用:vue, 前端时间字段 用newDate赋值;后端:.net6.0,webApi服务 收到的时间字段差8 小时;前端打印,与本地时间一致;后端调试,传值错误;解决办法:定位:后端时区配置问题;后端需配置时区;1.nuget 包下载符合.net6.0 的Microsoft.AspNetCore.Mvc.NewtonsoftJson6.0.x版本;......
  • springboot项目的目录顺序
    在idea上自动生成的springboot项目中一定要注意文件的上下顺序此时在项目运行时并不会报错但是不会执行utils下的类此时 此时 utils下的类是一个解析类可以解析一份存放在resources下的一份emp.xml文件并把解析后的数据返会给一个集合,因为此时不会执行utils下的类所以......
  • Spring笔记——SpringBoot启动流程
    Spring笔记——SpringBoot启动流程创建ApplicationContext配置资源加载器配置启动类确定web容器类型获取一些BootStrap容器初始动作配置一些容器初始动作配置一些监听器运行ApplicationContext创建BootStrap容器并设置监听器准备容器环境启动容器调用所有Applica......
  • 几款有用的外汇API接口
    外汇行情API是一种用于获取外汇市场实时行情数据的工具。随着外汇交易市场的不断发展,越来越多的交易者开始依赖外汇行情API来获取市场信息,并进行高效、准确的交易。下面将对排名前10的外汇行情API进行评比,并分析它们的优点。OANDAOANDA是外汇市场上最大的经纪商之一,其提供的外汇......
  • 基于vue+Springboot后台前后端分离项目:购物商城设计与实现(源码+文档+安装部署)
      博主介绍:黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育和辅导。所有项目都配有从入门到精通的基础知识视频课程,学习后应对毕业设计答辩。项目配有对应开发文档、开题报告、任务书......
  • Mac 使用VSCode搭建SpringBoot+Maven开发环境
    Mac使用VSCode搭建SpringBoot+Maven开发环境大多数人在开发java后端时使用的是IntelliJIDEA,该软件商用版收费太贵,社区版功能又太少,所以我希望可以使用VSCode来创建和开发后端项目,搭建的过程如下:1.下载和安装javasdk下载地址:https://www.oracle.com/java/technologies/downl......
  • Fastapi和requests文件的下载和上传
     介绍FastApi搭建一个简单下载和上传的服务,通过接口将文件保存在服务器上,而通过requests库子在本机中批量从服务器上传和下载文件FastApi搭建服务#application.py"""fastapi+request上传和下载功能"""fromfastapiimportFastAPI,UploadFilefromfastapi.respon......
  • 常用API:objects类 包装类
      包装类:        ......
  • springboot关于bean对象的管理
    Bean的扫描@springbootApplication注释,本质上是一个组合注解,其中组合了@ComponentScan注解,默认只能扫描启动类所在的包以及子包 如果要注册的bean对象来自于第三方(不是自定义的),是无法用@Component及衍生注解声明bean的可以用@Bean注释注入三方bean对象publicstatic......
  • 信息加密技术
          ......