本文介绍Spring Boot如何对接口的返回及入参进行RSA加解密,在日常工作中往往有些项目对安全性要求比较高,这个时候作为开发就要考虑如何安全的对接口进行加密。本文内容及设计方式为个人在碰到此问题时的解决方案,不担保适用于所有系统,所有场景,仅供参考。
为了方便使用,已开源并打包发布至Maven中央库供大家学习交流。


1.介绍

rsa-encrypt-body-spring-boot
实现了对Spring Boot接口返回值、参数值通过注解的方式自动加解密。

2.使用方法

Apache Maven

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

Gradle Groovy DSL

implementation 'cn.shuibo:rsa-encrypt-body-spring-boot:1.0.1.RELEASE'

Gradle Kotlin DSL

compile("cn.shuibo:rsa-encrypt-body-spring-boot:1.0.1.RELEASE")

Scala SBT

libraryDependencies += "cn.shuibo" % "rsa-encrypt-body-spring-boot" % "1.0.1.RELEASE"

Apache Ivy

<dependency org="cn.shuibo" name="rsa-encrypt-body-spring-boot" rev="1.0.1.RELEASE" />

Groovy Grape

@Grapes(
  @Grab(group='cn.shuibo', module='rsa-encrypt-body-spring-boot', version='1.0.1.RELEASE')
)

Leiningen

[cn.shuibo/rsa-encrypt-body-spring-boot "1.0.1.RELEASE"]

Apache Buildr

'cn.shuibo:rsa-encrypt-body-spring-boot:jar:1.0.1.RELEASE'

Maven Central Badge

[![Maven Central](https://img.shields.io/maven-central/v/cn.shuibo/rsa-encrypt-body-spring-boot.svg?label=Maven%20Central)](https://search.maven.org/search?q=g:%22cn.shuibo%22%20AND%20a:%22rsa-encrypt-body-spring-boot%22)

PURL

pkg:maven/cn.shuibo/rsa-encrypt-body-spring-boot@1.0.1.RELEASE

Bazel

maven_jar(
    name = "rsa-encrypt-body-spring-boot",
    artifact = "cn.shuibo:rsa-encrypt-body-spring-boot:1.0.1.RELEASE",
    sha1 = "72112fd5b521bcd10eaafc32a9e21405ed302619",
)
  • 以Maven为例,在pom.xml中引入依赖
<dependency>
    <groupId>cn.shuibo</groupId>
    <artifactId>rsa-encrypt-body-spring-boot</artifactId>
    <version>1.0.1.RELEASE</version>
</dependency>
  • 启动类Application中添加@EnableSecurity注解
@SpringBootApplication
@EnableSecurity
public class DemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}
  • 在application.yml或者application.properties中添加RSA公钥及私钥
rsa:
  encrypt:
    open: true # 是否开启加密 true  or  false
    showLog: true # 是否打印加解密log true  or  false
    publicKey: # RSA公钥
    privateKey: # RSA私钥
  • 对返回值进行加密
@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();
}

3.About author

扫码关注,不迷路
– Blog:http://www.shuibo.cn
– QQ群:7277991 点击加入

   
     
本文作者:      
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!
扫码关注不迷路!

2 对 “Spring Boot接口返回及入参RSA加解密”的想法;

  1. 最后一步:对传过来的加密参数解密,这个要怎么使用呢,传递过来的参数不是被加密成一个字符串了嘛,而解密接收的参数又是@RequestBody 的一个对象,刚入坑不久新手,,不太懂,求解,,谢谢大佬。

发表评论

电子邮件地址不会被公开。 必填项已用*标注