当我们在使用SpringBoot开发项目中,经常需要对数据库的密码进行加密,以保障密码信息的安全。下面是一份完整的攻略,讲解了使用SpringBoot 加密数据库密码的配置方法。
第一步:依赖
在pom.xml中添加如下模块依赖:
<dependency>
<groupId>com.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>2.0.0</version>
</dependency>
该依赖是SpringBoot中集成的Jasypt加密库的Starter,我们将使用它进行密码加密。
第二步:配置application.properties/application.yml
在SpringBoot的配置文件中,增加如下配置:
#Jasypt加密配置
jasypt.encryptor.password=密钥
或者
jasypt:
encryptor:
password: 密钥
在这里,我们需要先生成一个固定密钥,方便加密解密所需。
第三步:加密数据库密码
在数据库的密码字段中加上前缀{enc},以表示这是一个加密过的密码。
例如,原始密码为:
password
加密后的密码则为:
{enc}jAgK2tp4HIBdL5aag7MJHB==
第四步:解密数据库密码
在SpringBoot启动时,Jasypt自动读取application.properties/application.yml
中的jasypt.encryptor.password
配置项去解密所有的{enc}xxx
格式的属性值。
在Java代码中获取解密后的密码,可以使用如下方式:
@Autowired
private Environment environment;
String dbPassword = environment.getProperty("spring.datasource.password");
示例1
我们以MySQL作为示例,配置application.yml如下:
spring:
datasource:
username: root
password: {enc}jAgK2tp4HIBdL5aag7MJHB==
在Java代码中获取解密后的密码,可以使用如下方式:
@Autowired
private Environment environment;
// 获取解密后的数据库密码
String dbPassword = environment.getProperty("spring.datasource.password");
这样,我们获取到的dbPassword
即为解密后的密码,可以直接用于数据源的配置。
示例2
我们以MyBatis作为示例,配置mapper.xml中的数据源如下:
<dataSource type="com.alibaba.druid.pool.DruidDataSource">
<property name="driverClassName" value="${spring.datasource.driver-class-name}"/>
<property name="url" value="${spring.datasource.url}"/>
<property name="username" value="${spring.datasource.username}"/>
<property name="password" value="${spring.datasource.password}"/>
</dataSource>
在Java代码中获取解密后的密码,可以使用如下方式:
@Autowired
private Environment environment;
// 获取解密后的数据库密码
String dbPassword = environment.getProperty("spring.datasource.password");
// 将解密后的密码放入dataSource中
DruidDataSource dataSource = new DruidDataSource();
dataSource.setDriverClassName(environment.getProperty("spring.datasource.driver-class-name"));
dataSource.setUrl(environment.getProperty("spring.datasource.url"));
dataSource.setUsername(environment.getProperty("spring.datasource.username"));
dataSource.setPassword(dbPassword);
这样,我们将解密后的密码放入了DruidDataSource中,可以用于数据库连接。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:springboot数据库密码加密的配置方法 - Python技术站