SpringBoot Druid 数据库密码加密
程序员文章站
2022-05-15 14:59:56
...
背景:很多时候我们的数据库连接的配置都是明文放在配置文件中,这样缺乏安全性,所以数据库密码就需要加密保存。
准备工作
在druid jar 包所在的文件夹下运行druid jar包,获取加密后的密码(password), 数据库密码公钥(publickey)
打开命令窗口,执行:java -cp druid-1.1.2.jar com.alibaba.druid.filter.config.ConfigTools XXXXXX (数据库明文密码
获得公钥,秘钥,以及加密后的密码
privateKey:MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAhOqfy7HmtKUQmrpLkwYTnSM+4Mogi6LBMkNAbAF7Tzi1G7jXCn2skAxSOI2TRRVLuWKtpETdRYWxb/ih2vSGdwIDAQABAkAipnvEAXvQahu7Cof7KyFf3LleprL3VBWjgc7AmV5JF3IiR7CF+Q4x6TqrhRKI55ONb0I69EHsvrKaX8GauhwBAiEAwzsL32nQad5zgHqj2svMy+QoO9WKd+AGbCLqbR2+qHcCIQCuShM4bFB6SNaPLBBCJW593q+b1Y2vmMNDL+vg0m6SAQIgI1SILYIkqUQMeu+2v12qTiuX7FwUluT/xIn9CooberkCIDcH8putL5f86apZOmT4VrPtnTsyKcOZE4ZiWjMpnnoBAiEAvAyGK2r6Y6HMoPCQZkIyligNPcqcbim+X6RcsSozplk=
publicKey:MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAITqn8ux5rSlEJq6S5MGE50jPuDKIIuiwTJDQGwBe084tRu41wp9rJAMUjiNk0UVS7liraRE3UWFsW/4odr0hncCAwEAAQ==
password:SqL21NMwvmIf8lN9g88rEnr73x3v0TVVr6FfvWiO77O8yBHDIhSorZCgIq+P3Rfww+3u14wIN4h11X1DnfGTYg==
此时已经获取到加密后的密码,准备工作完成,直接上代码。
代码实现
注意:实现数据库加密功能需要自定义注入Bean,若直接构建DruidDataSource会直接根据配置文件进行构建,跳过解密过程。
配置文件:
publicKey=MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAITqn8ux5rSlEJq6S5MGE50jPuDKIIuiwTJDQGwBe084tRu41wp9rJAMUjiNk0UVS7liraRE3UWFsW/4odr0hncCAwEAAQ==
spring.datasource.druid.one.url=jdbc:mysql://192.168.5.6:3306/test?useUnicode=true&characterEncoding=UTF-8
spring.datasource.druid.one.username=root
spring.datasource.druid.one.password=SqL21NMwvmIf8lN9g88rEnr73x3v0TVVr6FfvWiO77O8yBHDIhSorZCgIq+P3Rfww+3u14wIN4h11X1DnfGTYg==
spring.datasource.druid.one.initialSize=5
spring.datasource.druid.one.minIdle=5
spring.datasource.druid.one.maxActive=20
spring.datasource.druid.one.maxWait=60000
spring.datasource.druid.one.driverClassName=com.mysql.jdbc.Driver
spring.datasource.druid.one.connectionProperties=config.decrypt=true;config.decrypt.key=${publicKey}
spring.datasource.druid.one.filters=stat,wall,log4j
实现代码:
@Data
@Configuration
@MapperScan(basePackageClasses = OneAydenPayRequestLogMapper.class, sqlSessionTemplateRef = "oneTpl")
@ConfigurationProperties("spring.datasource.druid.one")
public class DataSourceOneConf {
private String url;
private String driverClassName;
private String username;
private String password;
private Integer initialSize;
private Integer minIdle;
private Integer maxActive;
private Integer maxWait;
private String connectionProperties;
private String filters;
@Bean("oneDs")
@Primary
public DataSource dataSourceOne(){
DruidDataSource ds = new DruidDataSource();
ds.setUrl(url);
ds.setUsername(username);
ds.setPassword(password);
ds.setDriverClassName(driverClassName);
ds.setInitialSize(initialSize);
ds.setMaxActive(maxActive);
ds.setMaxWait(maxWait);
ds.setMinIdle(minIdle);
ds.setConnectionProperties(connectionProperties);
try {
ds.setFilters(filters);
} catch (SQLException e) {
e.printStackTrace();
}
return ds;
}
}
配置完成!数据库加密保存已经实现。
上一篇: DES加密解密
下一篇: pwnable.kr-bof
推荐阅读
-
数据库账号密码加密详解及实例
-
数据库账号密码加密详解及实例
-
SSM实现mysql数据库账号密码加密连接
-
SpringBoot中使用com.alibaba.druid.filter.config.ConfigTools对数据库密码加密的方法
-
springboot activiti 整合项目框架源码 druid 数据库连接池 shiro 安全框架
-
SpringBoot集成mybatis(配置通用mapper)并且使用druid作为数据库连接池
-
Tomcat数据库连接池数据库密码加密
-
Tomcat下使用Druid配置JNDI数据源且数据库密码加密
-
springboot+druid+mybatisplus使用注解整合连接多个数据库
-
springboot windows10风格 activiti 整合项目框架源码 shiro 安全框架 druid 数据库连接池