数据库加密

数据库用户名和密码使用明文可能不太安全,可以使用jasypt来加密。

引入jasypt依赖:

1
2
3
4
5
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>2.1.0</version>
</dependency>

在项目配置文件application.yml中配置用于加密的密钥:

1
2
3
jasypt:
encryptor:
password: febs

然后写个测试类生成加密后的用户名和密码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = FebsApplication.class)
public class FesbApplicationTest {

private Logger log = LoggerFactory.getLogger(this.getClass());

@Value("${jasypt.encryptor.password}")
private String encryptorPassword;

@Value("${spring.datasource.username}")
private String datasourceUsername;

@Value("${spring.datasource.password}")
private String datasourcePassword;

@Test
public void test() {
BasicTextEncryptor encryptor = new BasicTextEncryptor();
encryptor.setPassword(encryptorPassword);
String encryptedDatasourceUsername = encryptor.encrypt(datasourceUsername);
String encryptedDatasourcePassword = encryptor.encrypt(datasourcePassword);

log.info("数据库用户名加密结果:{}", encryptedDatasourceUsername);
log.info("数据库密码加密结果:{}", encryptedDatasourcePassword);
}
}

运行该测试类,可看到日志输出如下:

1
2
16:47:49.481 sms [main] INFO  cc.mrbird.ApplicationTest - 数据库用户名加密结果:YXbBtlpe8s67oSH6kRzMQA==
16:47:49.481 sms [main] INFO cc.mrbird.ApplicationTest - 数据库密码加密结果:FqxuAdBh84ABlsVW4INGIg==

把生成的密钥加上ENC(),如下所示:

1
2
3
4
5
spring:
datasource:
username: ENC(uIIz4pQyyh32rRelFICfuw==)
password: ENC(+7gDzyfHPCKjZXfwovDfIw==)
....

即可。

特别鸣谢 j.yao.SUSE


© 2017 - 2018  MrBird & Hosted by Coding Pages