如何在Spring Boot中配置数据库密码加密
在Spring Boot中配置数据库密码的加密,可以使用Jasypt(Java Simplified Encryption)库来实现。以下是配置和使用Jasypt进行数据库密码加密的步骤:
- 添加Jasypt的依赖到项目中:
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>3.0.3</version>
</dependency>
- 使用Jasypt的命令行工具或在线工具生成一个加密密码。例如,使用命令行工具:
java -cp jasypt-1.9.3.jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI input="your-database-password" password=encryption_key algorithm=PBEWithMD5AndDES
- 在
application.properties
或application.yml
配置文件中使用加密的密码:
spring.datasource.password=ENC(加密后的密码)
- 设置Jasypt的主密码,这将用于解密配置中的数据库密码:
import com.ulisesbocchio.jasyptspringboot.annotation.EnableEncryptableProperties;
import org.springframework.context.annotation.Configuration;
import org.jasypt.encryption.StringEncryptor;
import org.jasypt.util.text.BasicTextEncryptor;
@Configuration
@EnableEncryptableProperties
public class JasyptConfig {
@Bean
public StringEncryptor stringEncryptor() {
BasicTextEncryptor textEncryptor = new BasicTextEncryptor();
textEncryptor.setPassword("encryption_key"); // 与生成加密密码时的密钥相同
return textEncryptor::encrypt;
}
}
现在,即使配置文件暴露,数据库密码也将安全地保存在其加密形式。Spring Boot应用程序在启动时会使用提供的StringEncryptor
实例来解密配置中的加密值。
评论已关闭