SpringBoot集成ENC对配置文件进行加密的流程步骤
配置文件加密,集成ENC
引入POM依赖
<!-- ENC配置文件加密 -->
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>2.1.2</version>
</dependency>
【注意】开始使用的3.1.5版本,启动报错:
Reason: org.springframework.boot.context.properties.bind.BindException: Failed to bind properties under 'spring.redis.password' to java.lang.String报错原因:因为3.x版本的默认加密算法变了,所以对应配置文件加密算法配置得修改,同时加密的方法也得用新的加密算法计算出加密字符串。
使用工具类对明文数据进行加密处理,使用完后为了安全起见,可以删除加密盐值
package com.basic.test;
import org.jasypt.util.text.BasicTextEncryptor;
import org.junit.Test;
/**
* ClassName: CryptTest
* Package: com.basic.test
* Description:
*
* @Author 王涵
* @Date 2024/12/17 14:18
* @Version 1.0
*/
public class CryptTest {
/**
* 加密盐值,使用完成后进行删除,或者不能提交到`生产环境`,比如:
*/
private final static String PASSWORD = "basic";
@Test
public void encTest() {
BasicTextEncryptor encryptor = new BasicTextEncryptor();
// 用于设置加密密钥。密钥是用于加密和解密字符串的关键信息。
encryptor.setPassword(PASSWORD);
// 明文1
String name_encrypt = "wwwbaiducom";
// 明文2
String password_encrypt = "123456";
// 明文加密
String encrypt1 = encryptor.encrypt(name_encrypt);
String encrypt2 = encryptor.encrypt(password_encrypt);
System.out.println("明文加密1:" + encrypt1);
System.out.println("明文加密2:" + encrypt2);
// 密文解密
String decrypt1 = encryptor.decrypt(encrypt1);
String decrypt2 = encryptor.decrypt(encrypt2);
System.out.println("密文解密1:" + decrypt1);
System.out.println("密文解密2:" + decrypt2);
}
}
将加密后的密码配置到配置文件,使用
ENC()包裹。不需要ENC时可以直接写密码,不用ENC包裹即可
# 主库数据源
master:
url: jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: root
password: ENC(dboFmyYdJOKJYKt1DX/jmzPBcipbHHeP)
运行时配置
打开Run/Debug Configuratios

打开
Modify options选择Add VM Optiosn配置
VM Options为自己的加密盐值

启动类配置@EnableEncryptableProperties
package com.basic;
import com.ulisesbocchio.jasyptspringboot.annotation.EnableEncryptableProperties;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
/**
* @Author WangHan
* 心中那自由的世界,如此的清澈高远。
* @Date 2024/12/6 14:47
* @Description 启动程序
*/
@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })
@EnableEncryptableProperties
public class BasicApplication
{
public static void main(String[] args)
{
// 热部署生效 true 开启热部署 false 关闭热部署
System.setProperty("spring.devtools.restart.enabled", "false");
SpringApplication.run(BasicApplication.class, args);
System.out.println("(♥◠‿◠)ノ゙ 基础框架启动成功 ლ(´ڡ`ლ)゙");
}
}
jar包运行指定加密规则
cd /opt/home/test/ nohup java -Xms512m -Xmx512m -jar -Djasypt.encryptor.password=0tjtdBL6Lwk73GCLVnD2gc1rDbfgCX test-base.jar --spring.profiles.active=dev > test-base.out 2>&1 & echo start test-base
部署到tomcat
export JAVA_OPTS="-Djasypt.encryptor.password=0tjtdBL6Lwk73GCLVnD2gc1rDbfgCX"
以上就是SpringBoot集成ENC对配置文件进行加密的流程步骤的详细内容,更多关于SpringBoot ENC配置文件加密的资料请关注脚本之家其它相关文章!
相关文章
如何解决org.apache.jasper.JasperException:无法为JSP编译类详解
这篇文章主要给大家介绍了关于如何解决org.apache.jasper.JasperException:无法为JSP编译类的相关资料,原因可能是JSP文件的语法错误、类路径问题或其他配置问题,建议检查JSP文件的语法、类路径配置和其他相关配置,需要的朋友可以参考下2023-06-06
Java并发系列之ConcurrentHashMap源码分析
这篇文章主要为大家详细分析了Java并发系列之ConcurrentHashMap源码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2018-03-03
使用maven-archetype-plugin现有项目生成脚手架的方法
这篇文章主要介绍了使用maven-archetype-plugin现有项目生成脚手架的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2020-11-11


最新评论