SpringBoot利用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和maven的基本概念及其在JavaWeb开发中的应用,首先解释了Servlet是一个在服务器上处理请求的Java程序,然后介绍了maven作为管理和构建Java项目的工具,需要的朋友可以参考下2024-10-10
Spring Security基于Customizer 的分布式权限配置最佳实践指南
本文介绍了如何通过引入“插拔式”设计模式来解决SpringSecurity开发中的痛点,包括调度中心、标准协议和业务实现三个部分,并详细介绍了这个机制的工作原理、优点和注意事项,感兴趣的朋友跟随小编一起看看吧2025-12-12
JAVA利用HttpClient进行POST请求(HTTPS)实例
下面小编就为大家带来一篇JAVA利用HttpClient进行POST请求(HTTPS)实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起 小编过来看看吧2016-11-11
Java方法递归的形式和常见递归算法(方法递归结合File类查找文件)
方法递归方法直接调用自己或者间接调用自己的形式称为方法递归( recursion),递归做为一种算法在程序设计语言中广泛应用,这篇文章主要介绍了Java方法递归的形式和常见递归算法-方法递归结合File类查找文件,需要的朋友可以参考下2023-02-02
Spring Boot如何使用Spring Security进行安全控制
要实现访问控制的方法多种多样,可以通过Aop、拦截器实现,也可以通过框架实现,本文将具体介绍在Spring Boot中如何使用Spring Security进行安全控制。2017-04-04


最新评论