SpringBoot利用jasypt实现配置文件加密的完整指南

 更新时间:2025年08月27日 10:37:04   作者:HeyS1  
在实际开发中,若出于安全考虑不想暴露一些敏感的配置,如数据库密码等,就需要对配置文件进行加密,下面我们来看看如何使用jasypt给配置文件加密吧

在实际开发中,若出于安全考虑不想暴露一些敏感的配置,如数据库密码等,就需要对配置文件进行加密,这个开源工具就很好帮我们实现这个需求

思路就是把配置文件中的值手动加密填上去,然后生产环境的秘钥通过运行参数传递,开发测试环境可以直接把秘钥写在配置文件

1.引入依赖

非Spring Boot的使用方式可查阅官方文档

github.com/ulisesbocchio/jasypt-spring-boot

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

2.yml 加入配置

# 配置秘钥
jasypt:
  encryptor:
    password: ${jasypt.encryptor.password:defaultPwd}

# 需要加密的字段(明文:123456),需要使用ENC() 包裹
db:
  password: ENC(bVv/e16L6qPO+1pqEPMUYT5uW1EjsERTCoIliqABM+YMr6WURdxPy26La8wHCxgF)

3.测试

@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = OrderApplication.class)
public class DemoApplicationTest {

    @Autowired
    ConfigurableEnvironment environment;
    @Autowired
    StringEncryptor stringEncryptor;


    static {
        //指定运行环境密码
        System.setProperty("jasypt.encryptor.password", "password");
    }

    @Test
    public void testEnvironmentProperties() {
        //解密密文
        System.out.println(environment.getProperty("db.password"));
    }


    @Test
    public void encrypt() {
        //此处得到加密后的文本,放入yml
        System.out.println("密文: " + stringEncryptor.encrypt("123456"));
    }
}

方法补充

SpringBoot配置文件加密

依赖

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

设置秘钥

jasypt.encryptor.password=秘钥 开发环境可以直接在配置文件中指定,生产环境可以使用启动命理 --jasypt.encryptor.password=XXX 进行配置 ####加密解密

  package com.itdfq.springboot;

import org.jasypt.encryption.StringEncryptor;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

/**
 * @author duanfangqin 2022/7/11 10:56
 * @implNote
 */
@SpringBootTest
public class JasyptTest {
    @Autowired
    private StringEncryptor stringEncryptor;

    @Test
    public void encrypt(){

        System.out.println(stringEncryptor.encrypt("qweasd123"));
    }
    @Test
    public void decrypt(){
        System.out.println(stringEncryptor.decrypt("zI16ovOHuYiPIQaFx9cVlJF30bg5h3ql"));
    }
}

配置文件密码设置

#Redis服务器地址
spring.redis.host=119.3.234.108
#服务器密码
spring.redis.password=ENC(nwElWn8r6aqVHDdAStIRiEXPAiE57qUF)

ENC(加密之后的密码)

到此这篇关于SpringBoot利用jasypt实现配置文件加密的完整指南的文章就介绍到这了,更多相关SpringBoot jasypt配置文件加密内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 在SpringBoot中更改默认端口的方法总结

    在SpringBoot中更改默认端口的方法总结

    在本文中,小编将带大家学习如何在 Spring Boot 中更改默认端口,默认情况下,嵌入式 Web 服务器使用 8080端口来启动 Spring 引导应用程序,有几种方法可以更改该端口,文中介绍的非常详细,需要的朋友可以参考下
    2023-07-07
  • 通过Java代码来创建view的方法

    通过Java代码来创建view的方法

    本文给大家分享通过java代码创建view的方法,以TextView为例创建控件的方法,需要的的朋友参考下吧
    2017-08-08
  • Mybatis Plus使用@TableId之坑及解决

    Mybatis Plus使用@TableId之坑及解决

    这篇文章主要介绍了Mybatis Plus使用@TableId之坑及解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12
  • Java 关于eclipse导入项目发生的问题及解决方法(推荐)

    Java 关于eclipse导入项目发生的问题及解决方法(推荐)

    下面小编就为大家分享一篇Java 关于eclipse导入项目发生的问题及解决方法(推荐),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2017-12-12
  • JavaWeb应用实例:用servlet实现oracle 基本增删改查

    JavaWeb应用实例:用servlet实现oracle 基本增删改查

    本篇文章主要介绍了JavaWeb应用实例:用servlet实现oracle 基本增删改查,非常具有实用价值,需要的朋友可以参考下。
    2017-01-01
  • Java 中 Map 集合的三种遍历方式小结

    Java 中 Map 集合的三种遍历方式小结

    这篇文章主要介绍了Java 中 Map 集合的三种遍历方式,每种遍历方式结合示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-12-12
  • JAVA读取PDF、WORD文档实例代码

    JAVA读取PDF、WORD文档实例代码

    本篇文章主要通过实例代码介绍了JAVA读取PDF、WORD文档,需要的朋友可以参考下
    2017-04-04
  • Java8中利用stream对map集合进行过滤的方法

    Java8中利用stream对map集合进行过滤的方法

    这篇文章主要给大家介绍了关于Java8中利用stream对map集合进行过滤的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-07-07
  • IDEA自定义pom依赖的步骤详解

    IDEA自定义pom依赖的步骤详解

    这篇文章主要介绍了IDEA自定义pom依赖的步骤详解,本文分步骤通过图文并茂的形式给大家介绍的非常详细对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-04-04
  • 实例讲解Java中的synchronized

    实例讲解Java中的synchronized

    这篇文章主要介绍了Java中synchronized的使用方法,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-07-07

最新评论