springboot 配置文件加密
程序员文章站
2022-06-13 19:04:54
...
一.添加相关依赖
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>2.1.0</version>
</dependency>
<dependency>
<groupId>org.jasypt</groupId>
<artifactId>jasypt</artifactId>
<version>1.9.3</version>
</dependency>
二.设置秘钥,直接写在配置文件中,在application.yml文件中加上
jasypt:
encryptor:
password: hn #这里是需要设置的密码
三.生成加密密码
import lombok.extern.slf4j.Slf4j;
import org.jasypt.encryption.StringEncryptor;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
@Slf4j
@RunWith(SpringRunner.class)
@SpringBootTest
public class KissTest {
@Autowired
StringEncryptor stringEncryptor;
@Test
public void encryptPwd() {
//执行加密,root为加密前密码,result为加密后密码
String result = stringEncryptor.encrypt("root");
System.out.println("==================");
System.out.println(result);
System.out.println("==================");
}
}
得到一个密码
四.将明文密码替换成加密码密码(ENC(密码)),这样获取配置的时候会自动解密
五.使用普通属性测试一下
test: ENC(9B4hci90P22vTd/s4XMtCQ==) #明文是root
六.上面就完成了,但是我们的秘钥放在配置文件中显然是不安全的,别人直接拿着秘钥就可以把密码解密出来,所以我们就需要吧秘钥隐藏起来
项目打包的时候,我们可以把第二步的配置给去掉,
第一种:以命令形式添加配置,运行项目的时候 在后面拼接 --jasypt.encryptor.password=123456
java -jar xxx.jar --jasypt.encryptor.password=hn
第二种:以环境变量形式存储(linux)
java -jar xxx.jar --jasypt.encryptor.password=${JASYPT_PASSWORD}