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配置文件加密内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Servlet编程第一步之从零构建Hello World应用详细步骤+图解

    Servlet编程第一步之从零构建Hello World应用详细步骤+图解

    本文详细介绍了Servlet和maven的基本概念及其在JavaWeb开发中的应用,首先解释了Servlet是一个在服务器上处理请求的Java程序,然后介绍了maven作为管理和构建Java项目的工具,需要的朋友可以参考下
    2024-10-10
  • Java的包装类特性总结

    Java的包装类特性总结

    这篇文章主要介绍Java的包装类的一些特性,包装类的作用,哪些类属于包装类等,文中有详细的代码示例,对我们的学习或工作有一定的帮助,需要的朋友可以参考下
    2023-05-05
  • SpringBoot项目微信云托管入门部署实践

    SpringBoot项目微信云托管入门部署实践

    本文主要介绍了SpringBoot项目微信云托管入门部署实践,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • Java集合List的方法及遍历方式举例

    Java集合List的方法及遍历方式举例

    这篇文章主要介绍了Java集合List的方法及遍历方式的相关资料,List 是Java集合框架中的一种接口,继承自Collection接口,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2025-05-05
  • Spring Security基于Customizer 的分布式权限配置最佳实践指南

    Spring Security基于Customizer 的分布式权限配置最佳实践指南

    本文介绍了如何通过引入“插拔式”设计模式来解决SpringSecurity开发中的痛点,包括调度中心、标准协议和业务实现三个部分,并详细介绍了这个机制的工作原理、优点和注意事项,感兴趣的朋友跟随小编一起看看吧
    2025-12-12
  • idea打开和读取*properties文件乱码的解决

    idea打开和读取*properties文件乱码的解决

    本文主要介绍了idea打开和读取*properties文件乱码的解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-09-09
  • JAVA利用HttpClient进行POST请求(HTTPS)实例

    JAVA利用HttpClient进行POST请求(HTTPS)实例

    下面小编就为大家带来一篇JAVA利用HttpClient进行POST请求(HTTPS)实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起 小编过来看看吧
    2016-11-11
  • Java方法递归的形式和常见递归算法(方法递归结合File类查找文件)

    Java方法递归的形式和常见递归算法(方法递归结合File类查找文件)

    方法递归方法直接调用自己或者间接调用自己的形式称为方法递归( recursion),递归做为一种算法在程序设计语言中广泛应用,这篇文章主要介绍了Java方法递归的形式和常见递归算法-方法递归结合File类查找文件,需要的朋友可以参考下
    2023-02-02
  • Java 基础语法中的逻辑控制

    Java 基础语法中的逻辑控制

    这篇文章主要介绍了Java 基础语法中的逻辑控制的相关资料,需要的朋友可以参考下面文章内容
    2021-09-09
  • Spring Boot如何使用Spring Security进行安全控制

    Spring Boot如何使用Spring Security进行安全控制

    要实现访问控制的方法多种多样,可以通过Aop、拦截器实现,也可以通过框架实现,本文将具体介绍在Spring Boot中如何使用Spring Security进行安全控制。
    2017-04-04

最新评论