SpringBoot配置文件加密
SpringBoot配置文件加密
-
新建SpringBoot项目
-
在maven中引入jasypt加密组件
<!-- jasypt加密组件: https://mvnrepository.com/artifact/com.github.ulisesbocchio/jasypt-spring-boot-starter --> <dependency> <groupId>com.github.ulisesbocchio</groupId> <artifactId>jasypt-spring-boot-starter</artifactId> <version>2.1.0</version> </dependency>
-
在配置文件中配置加密密钥
#加密的密钥 jasypt.encryptor.password=sc
-
新建测试类
@Test public void sc(){ // 对应配置文件中配置的加密密钥 System.setProperty("jasypt.encryptor.password", "sc"); StringEncryptor stringEncryptor = new DefaultLazyEncryptor(new StandardEnvironment()); System.out.println("加密: " + stringEncryptor.encrypt("root")); System.out.println("加密: "+ stringEncryptor.encrypt("root")); System.out.println("解密: " + stringEncryptor.decrypt("itJ8zZfWj54ZIf1lLVojrg==")); }
-
将加密后的账号和密码复制到配置文件中,jasypt默认使用
ENC()
来标识加密,加载配置的时候检测到ENC()
即会自动解密# 数据库连接地址 spring.datasource.url=jdbc:mysql://localhost:3306/ceshi?serverTimezone=UTC # 数据库用户名&密码: spring.datasource.username=ENC(b6zfPR9R9aaTtl5VPwrvww==) spring.datasource.password=ENC(AvEzdYaTFniscWGhUw6M/ERwKwhpbZE7)
jasypt默认使用
ENC()
来标识加密自定义加密标识CESHI()
#加密前缀 #jasypt.encryptor.property.prefix=CESHI( #加密后缀缀 #jasypt.encryptor.property.suffix=)
以上我们的密钥也是保存在配置文件中的,一旦密钥泄露,信息被解密,安全隐患依然存在!因此我们可以通过将密钥设置为程序启动时的参数来避免。
java -Djasypt.encryptor.password=加密的密钥 -jar test.jar