springboot2.1入门系列七 集成jasypt对数据库配置加密

本文为Spring Boot2.1系列的第七篇,代码可以从github下载 https://github.com/yinww/demo-springboot2.git

对数据库的用户名和密码进行保护的重要性不用赘述,如果直接写在配置文件中,容易造成数据库密码被人获取,可能导致严重后果,本文介绍使用jasypt对数据库配置加密。

本文在第六篇 集成Hikari连接池 的基础上,主要描述针对集成jasypt需要做的变化。

一、引入依赖


    com.github.ulisesbocchio
    jasypt-spring-boot-starter
    2.1.0

二、对数据库密码进行加密

jasypt官网提供了工具能对文本进行加密,下载后可本地命令行使用。

这里介绍通过程序进行加密的办法:

application.properties 添加配置

jasypt.encryptor.password=Centyun666

Controller 添加一个接口

@Autowired
private StringEncryptor stringEncryptor;

@RequestMapping(value = "/encrypt/{value}")
public String encrypt(@PathVariable String value) {
    String encrypt = stringEncryptor.encrypt(value);
    return encrypt;
}

启动程序后,访问 http://localhost:8080/encrypt/root

HGCrhmTercY/FbFLihiwew==

这就是jasypt使用密钥Centyun666对明文root进行加密后的密文。将该密文配置到application.properties文件中

spring.application.name=demo007

jasypt.encryptor.password=Centyun666

# jdbc_config   datasource
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/demo007?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&serverTimezone=GMT%2B8
spring.datasource.username=root
# root / root
spring.datasource.password=ENC(HGCrhmTercY/FbFLihiwew==)

# Hikari will use the above plus the following to setup connection pooling
spring.datasource.type=com.zaxxer.hikari.HikariDataSource
spring.datasource.hikari.minimum-idle=5
spring.datasource.hikari.maximum-pool-size=15
spring.datasource.hikari.auto-commit=true
spring.datasource.hikari.idle-timeout=30000
spring.datasource.hikari.pool-name=UserHikariCP
spring.datasource.hikari.max-lifetime=1800000
spring.datasource.hikari.connection-timeout=30000
spring.datasource.hikari.connection-test-query=SELECT 1

mybatis.typeAliasesPackage=com.yinww.demo.springboot2.demo007.domain
mybatis.mapperLocations=classpath:mapper/*.xml

重新启动程序后,添加数据

查看数据库,可以看到数据已经保存成功

mysql> select * from user;
+----+-----------+
| id | name      |
+----+-----------+
|  1 | 张三丰    |
+----+-----------+
1 row in set (0.00 sec)

至此对数据库的密码进行了保护。如果在浏览器中多次访问加密接口,会发现相同的明文得到的密文是不一样的。

本文内容到此结束,更多内容可关注公众号:

springboot2.1入门系列七 集成jasypt对数据库配置加密_第1张图片

你可能感兴趣的:(SpringBoot)