赞
踩
需求:springboot的配置文件中,把连接数据库的密码加密,使之不是以明文存储
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>2.0.0</version>
</dependency>
# jasypt加密秘钥,该秘钥可以自定义
jasypt.encryptor.password = maple@2020
@RunWith(SpringRunner.class)
@SpringBootTest
public class TestDemo {
@Autowired
StringEncryptor stringEncryptor;//密码解码器自动注入
@Test
public void test() {
System.out.println(stringEncryptor.encrypt("123456"));
}
}
输出(注意每次输出不一定一样):caCSoLhToaPqpquknipDOg==
该步骤也可以用命令:
java -cp jasypt-1.9.2.jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI input=明文密码 password=加密秘钥 algorithm=PBEWithMD5AndDES
注意替换明文密码和加密秘钥!
但是该命令要在Maven库中该jar包所在目录下打开命令窗口执行(例D:\Maven_repository\org\jasypt\jasypt\1.9.2),不然容易报错:找不到或无法加载主类:xxx
4. 把配置文件中的值替换即可,如:
spring.datasource.password=ENC(caCSoLhToaPqpquknipDOg==)
如此则密码以密文保存在配置文件中!(使用@SpringBootApplication注解情况下springboot自动读取配置)
如果自己要读取属性配置则需要在读取配置类中注入解码类,例:
@Configuration public class DatabaseConfig { @Autowired StringEncryptor encryptor; @Value("${spring.datasource.driver-class-name}") private String driverClassName; @Value("${spring.datasource.url}") private String url; @Value("${spring.datasource.username}") private String username; @Value("${spring.datasource.password}") private String pswd; //... }
附:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。