SpringBoot实现application.yml文件敏感信息加密

 更新时间:2023年07月24日 08:59:06   作者:云帆丨  
本文主要介绍了SpringBoot实现application.yml文件敏感信息加密,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

在我们传统的基于SpringBoot开发的项目中,在配置文件里,或多或少的都会有一些敏感信息,这样就会丢失一定的安全性,所以我们就需要,对敏感信息进行加密。我们可以使用jasypt工具进行加密。

好了废话不多少,直接进入正题:

1. 导入依赖

<dependency>  
    <groupId>com.github.ulisesbocchio</groupId>  
    <artifactId>jasypt-spring-boot-starter</artifactId>  
    <version>3.0.5</version>  
</dependency>

我的Demo里使用的是SpringBoot3.0之后的版本,所以大家如果像我一样都是基于SpringBoot3.0之后的,jasypt一定要使用3.0.5以后的版本。

2. 使用jasypt

我们在配置文件里写几行配置

jasypt:  
  encryptor:  
    password: sdjsdbshdbfuasd  
    property:  
      prefix: ENC(
      suffix: )

password是加密密码,必须配置这一项,值可以随便输入。
prefix和suffix是默认配置,也可以自定义,默认值就是ENC(和),这个是自动解密使用的。

2.1. 加/解密

jasypt 提供了一个工具类接口,StringEncryptor,这个接口提供了加解密方法。下面是他的源码。

public interface StringEncryptor {  
    /**  
    * 加密输入信息  
    *  
    * @param 要加密的信息  
    * @return 加密结果  
    */  
    public String encrypt(String message);  
    /**  
    * 解密加密信息  
    *  
    * @param 加密信息(encryptedMessage) 要解密的加密信息  
    * @return 解密结果  
    */  
    public String decrypt(String encryptedMessage);  
}

我们在 test 测试类中,将要进行加密的文本使用encrypt方法进行加密

@SpringBootTest  
@Slf4j  
class JasryptApplicationTests {  
    @Autowired  
    private StringEncryptor stringEncryptor;  
    @Test  
    void contextLoads() {  
        String username = stringEncryptor.encrypt("root");  
        String password = stringEncryptor.encrypt("root");  
        log.info("username encrypt is {}", username);  
        log.info("password encrypt is {}", password);  
        log.info("username decrypt is {}", stringEncryptor.decrypt(username));  
        log.info("password decrypt is {}", stringEncryptor.decrypt(password));  
    }  
}

上边代码,加密的内容是,MySQL的用户名和密码,同时对它们进行加密和解密,你当然可以对任意配置信息进行加解密操作。看看输出内容:

2023-07-23T18:59:50.621+08:00  INFO 9489 --- [           main] c.e.jasrypt.JasryptApplicationTests      : username encrypt is 61zSoixtNayUruXt5x84kEKO9jGnZObTGCa1+k5Yg9F7qSUiZvp5fG31AMuVqrot
2023-07-23T18:59:50.621+08:00  INFO 9489 --- [           main] c.e.jasrypt.JasryptApplicationTests      : password encrypt is a6snCZCkbQFKkQqxN2bS18ags04yZxH+THwIL5RjGocEjG9sLkJvvasPFFVxEBWv
2023-07-23T18:59:50.623+08:00  INFO 9489 --- [           main] c.e.jasrypt.JasryptApplicationTests      : username decrypt is root
2023-07-23T18:59:50.630+08:00  INFO 9489 --- [           main] c.e.jasrypt.JasryptApplicationTests      : password decrypt is root

加密默认使用的是PBEWITHHMACSHA512ANDAES_256加密

我们将密文,替换到数据源,配置:

spring:  
datasource:  
driver-class-name: com.mysql.cj.jdbc.Driver  
url: jdbc:mysql://localhost:3306/honey?useUnicode=true&zeroDateTimeBehavior=convertToNull&autoReconnect=true&characterEncoding=utf-8  
username: ENC(61zSoixtNayUruXt5x84kEKO9jGnZObTGCa1+k5Yg9F7qSUiZvp5fG31AMuVqrot)  
password: ENC(a6snCZCkbQFKkQqxN2bS18ags04yZxH+THwIL5RjGocEjG9sLkJvvasPFFVxEBWv)

注意别忘了加上前缀和后缀,如上边代码。

这个时候就已经完成了,但是官方不建议我们将加密密码放到配置文件中,我们应作为系统属性、命令行参数或环境变量传递,只要其名称是 jasypt.encryptor.password,就能正常工作。
我们可以将项目打为jar包然后使用 java -jar命令

java -jar jasrypt-0.0.1-SNAPSHOT.jar --jasypt.encryptor.password=加密密码

加密密码必须与之前给属性加密时用的加密密码一致。

3. 结尾

到此这篇关于SpringBoot实现application.yml文件敏感信息加密的文章就介绍到这了,更多相关SpringBoot application.yml敏感信息加密内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • SpringBoot实现读取YML,yaml,properties文件

    SpringBoot实现读取YML,yaml,properties文件

    yml,yaml,properties三种文件都是用来存放配置的文件,一些静态数据,配置的数据都会存放到里边。本文主要为大家整理了SpringBoot实现读取YML,yaml,properties文件的方法,需要的可以参考一下
    2023-04-04
  • 基于java中byte数组与int类型的转换(两种方法)

    基于java中byte数组与int类型的转换(两种方法)

    下面小编就为大家带来一篇基于java中byte数组与int类型的转换(两种方法)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-08-08
  • 2023最新版IDEA创建javaweb项目的详细图文教程

    2023最新版IDEA创建javaweb项目的详细图文教程

    之前用的社区版IDEA无法部署JavaWeb项目,于是装了一个最新版的IDEA,下面这篇文章主要给大家介绍了关于2023最新版IDEA创建javaweb项目的详细图文教程,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2023-06-06
  • SpringCloud gateway如何修改返回数据

    SpringCloud gateway如何修改返回数据

    这篇文章主要介绍了SpringCloud gateway如何修改返回数据的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06
  • mybatis 事务回滚配置操作

    mybatis 事务回滚配置操作

    这篇文章主要介绍了mybatis 事务回滚配置操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-02-02
  • 关于Java集合框架面试题(含答案)下

    关于Java集合框架面试题(含答案)下

    Java集合框架为Java编程语言的基础,也是Java面试中很重要的一个知识点。这里,我列出了一些关于Java集合的重要问题和答案。
    2015-12-12
  • Java利用MessageFormat实现短信模板的匹配

    Java利用MessageFormat实现短信模板的匹配

    这篇文章主要介绍了Java利用MessageFormat实现短信模板的匹配,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-06-06
  • springboot 配置文件里部分配置未生效的解决

    springboot 配置文件里部分配置未生效的解决

    springboot 配置文件里部分配置未生效的解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • spring中前端明明传了值后端却接收不到问题解决办法

    spring中前端明明传了值后端却接收不到问题解决办法

    在学习Spring的时候遇到了一个问题,后台一直接收不到前台传递过来的参数,耽误了好长时间终于找到了原因,这篇文章主要给大家介绍了关于spring中前端明明传了值后端却接收不到问题的解决办法,需要的朋友可以参考下
    2024-05-05
  • Spring中RedisTemplate使用方法详解

    Spring中RedisTemplate使用方法详解

    Spring封装了一个比较强大的模板,也就是redisTemplate,方便在开发的时候操作Redis缓存,这篇文章主要给大家介绍了关于Java中RedisTemplate使用方法的相关资料,需要的朋友可以参考下
    2023-12-12

最新评论