引入jasypt依赖

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

设置jasypt加密的盐值

在application.yml配置文件中设置jasypt加密的盐值

1
2
3
jasypt:
encryptor:
password: ledao

获取加密后的数据库密码

在测试模块中使用下面代码获取加密后的数据库密码,我的数据库密码为123456,下面代码在控制台打印加密后的数据库密码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package com.ledao;

import org.jasypt.encryption.StringEncryptor;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;

import javax.annotation.Resource;

@SpringBootTest
class BookManageSystemApplicationTests {

@Resource
private StringEncryptor encryptor;

@Test
void contextLoads() {
System.out.println(encryptor.encrypt("123456"));
}

}

修改application.yml的数据库密码

将上面得到的加密后的密码用ENC()包起来,完整代码如下:(把url和username也加密起来也是可以的)

1
2
3
4
5
6
7
8
9
10
# 数据源配置
spring:
application:
name: microservice-student
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/db_bookmanagesystem?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8
username: root
password: ENC(69cbirQ6l+cOIL8x6nblXw==)

PS.

虽然jasypt每次加密的结果都不同,但是解密后的原密码是同一个