`
log_cd
  • 浏览: 1098429 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

SpringBoot使用Druid数据库密码加密

阅读更多
1、生成公钥、私钥和密码加密串
java -cp druid-1.0.28.jar com.alibaba.druid.filter.config.ConfigTools pcds123123456

2、使用 Durid 的工具类 ConfigTools 验证加密字符串
@Test
public void db_decrypt_test() throws Exception {
   String publicKey = "MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAJggkaRJ+bqLMF6pefubEDLViboxYKGTdGe+78DziIta8Nv8crOA83M0tFG8y8CqHcFYIbG89q9zcnNvL+E2/CECAwEAAQ==";
   String password = "AgDRyKJ81Ku3o0HSyalDgCTtGsWcKz3fC0iM5pLur2QJnIF+fKWKFZ6c6e36M06tF2uCadvS/EodWxmRDWwvIA==";
   System.out.println(ConfigTools.decrypt(publicKey, password));
}

3、application.properties中的数据源配置
# mysql config
spring.datasource.name=pcdsdata
spring.datasource.url=jdbc:mysql://192.168.1.1/mydb
spring.datasource.username=root
spring.datasource.password=AgDRyKJ81Ku3o0HSyalDgCTtGsWcKz3fC0iM5pLur2QJnIF+fKWKFZ6c6e36M06tF2uCadvS/EodWxmRDWwvIA==
 
# druid datasource config
spring.datasource.driverClassName=com.mysql.jdbc.Driver
spring.datasource.maxActive=20
spring.datasource.initialSize=1
spring.datasource.minIdle=1
spring.datasource.maxWait=60000
spring.datasource.timeBetweenEvictionRunsMillis=60000
spring.datasource.minEvictableIdleTimeMillis=300000
spring.datasource.validationQuery=select 1 from dual
spring.datasource.testWhileIdle=true
spring.datasource.testOnBorrow=false
spring.datasource.testOnReturn=false
spring.datasource.poolPreparedStatements=true
spring.datasource.maxOpenPreparedStatements=20
spring.datasource.maxPoolPreparedStatementPerConnectionSize=20
spring.datasource.filters=config,stat,wall,log4j
spring.datasource.publicKey=MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAJggkaRJ+bqLMF6pefubEDLViboxYKGTdGe+78DziIta8Nv8crOA83M0tFG8y8CqHcFYIbG89q9zcnNvL+E2/CECAwEAAQ==
spring.datasource.connectionProperties=config.decrypt=true;config.decrypt.key=${spring.datasource.publicKey}

4、配置注入数据源Bean
@Configuration
@ConfigurationProperties(prefix = "spring.datasource")
public class DataSourceConfig {
	
	private static final Logger LOGGER = LoggerFactory.getLogger(DataSourceConfig.class);
	 
    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 Integer timeBetweenEvictionRunsMillis;
    private Integer minEvictableIdleTimeMillis;
    private String validationQuery;
    private Boolean testWhileIdle;
    private Boolean testOnBorrow;
    private Boolean testOnReturn;
    private Boolean poolPreparedStatements;
    private Integer maxOpenPreparedStatements;
    private Integer maxPoolPreparedStatementPerConnectionSize;
    private String filters;
    private String publicKey;
    private String connectionProperties;
 
    @Primary
    @Bean(name = "dataSource")
    public DataSource dataSource() {
        DruidDataSource datasource = new DruidDataSource();
        datasource.setUrl(url);
        datasource.setUsername(username);
        datasource.setPassword(password);
        datasource.setDriverClassName(driverClassName);
        datasource.setInitialSize(initialSize);
        datasource.setMinIdle(minIdle);
        datasource.setMaxActive(maxActive);
        datasource.setMaxWait(maxWait);
        datasource.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis);
        datasource.setMinEvictableIdleTimeMillis(minEvictableIdleTimeMillis);
        datasource.setValidationQuery(validationQuery);
        datasource.setTestWhileIdle(testWhileIdle);
        datasource.setTestOnBorrow(testOnBorrow);
        datasource.setTestOnReturn(testOnReturn);
        datasource.setPoolPreparedStatements(poolPreparedStatements);
        datasource.setMaxOpenPreparedStatements(maxOpenPreparedStatements);
        datasource.setMaxPoolPreparedStatementPerConnectionSize(maxPoolPreparedStatementPerConnectionSize);
        datasource.setConnectionProperties(connectionProperties);
        try {
            datasource.setFilters(filters);
        } catch (SQLException e) {
            LOGGER.error("druid configuration initialization filter", e);
        }
        return datasource;
    }
 
	/**
	 * 配置mybatis使用的sqlSessionFactory
	 * @return
	 */
	@Bean
	@ConfigurationProperties(prefix = "mybatis")
	public SqlSessionFactoryBean sqlSessionFactoryBean(@Qualifier("dataSource") DataSource dataSource) {
		SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
		sqlSessionFactoryBean.setDataSource(dataSource);
		return sqlSessionFactoryBean;
	}
 
	/**
	 * 配置JdbcTemplate
	 * @param dataSource
	 * @return
	 */
	@Bean(name = "jdbcTemplate")
	public JdbcTemplate jdbcTemplate(@Qualifier("dataSource") DataSource dataSource) {
		return new JdbcTemplate(dataSource);
	}
	
	/**
	 * 配置@Transactional注解事物
	 * @return
	 */
	@Bean
	public PlatformTransactionManager transactionManager(@Qualifier("dataSource") DataSource dataSource) {
		return new DataSourceTransactionManager(dataSource);
	}    
    
    public String getUrl() {
        return url;
    }
 
    public void setUrl(String url) {
        this.url = url;
    }
 
    public String getDriverClassName() {
        return driverClassName;
    }
 
    public void setDriverClassName(String driverClassName) {
        this.driverClassName = driverClassName;
    }
 
    public String getUsername() {
        return username;
    }
 
    public void setUsername(String username) {
        this.username = username;
    }
 
    public String getPassword() {
        return password;
    }
 
    public void setPassword(String password) {
        this.password = password;
    }
 
    public Integer getInitialSize() {
        return initialSize;
    }
 
    public void setInitialSize(Integer initialSize) {
        this.initialSize = initialSize;
    }
 
    public Integer getMinIdle() {
        return minIdle;
    }
 
    public void setMinIdle(Integer minIdle) {
        this.minIdle = minIdle;
    }
 
    public Integer getMaxActive() {
        return maxActive;
    }
 
    public void setMaxActive(Integer maxActive) {
        this.maxActive = maxActive;
    }
 
    public Integer getMaxWait() {
        return maxWait;
    }
 
    public void setMaxWait(Integer maxWait) {
        this.maxWait = maxWait;
    }
 
    public Integer getTimeBetweenEvictionRunsMillis() {
        return timeBetweenEvictionRunsMillis;
    }
 
    public void setTimeBetweenEvictionRunsMillis(Integer timeBetweenEvictionRunsMillis) {
        this.timeBetweenEvictionRunsMillis = timeBetweenEvictionRunsMillis;
    }
 
    public Integer getMinEvictableIdleTimeMillis() {
        return minEvictableIdleTimeMillis;
    }
 
    public void setMinEvictableIdleTimeMillis(Integer minEvictableIdleTimeMillis) {
        this.minEvictableIdleTimeMillis = minEvictableIdleTimeMillis;
    }
 
    public String getValidationQuery() {
        return validationQuery;
    }
 
    public void setValidationQuery(String validationQuery) {
        this.validationQuery = validationQuery;
    }
 
    public Boolean getTestWhileIdle() {
        return testWhileIdle;
    }
 
    public void setTestWhileIdle(Boolean testWhileIdle) {
        this.testWhileIdle = testWhileIdle;
    }
 
    public Boolean getTestOnBorrow() {
        return testOnBorrow;
    }
 
    public void setTestOnBorrow(Boolean testOnBorrow) {
        this.testOnBorrow = testOnBorrow;
    }
 
    public Boolean getTestOnReturn() {
        return testOnReturn;
    }
 
    public void setTestOnReturn(Boolean testOnReturn) {
        this.testOnReturn = testOnReturn;
    }
 
    public Boolean getPoolPreparedStatements() {
        return poolPreparedStatements;
    }
 
    public void setPoolPreparedStatements(Boolean poolPreparedStatements) {
        this.poolPreparedStatements = poolPreparedStatements;
    }
 
    public Integer getMaxOpenPreparedStatements() {
        return maxOpenPreparedStatements;
    }
 
    public void setMaxOpenPreparedStatements(Integer maxOpenPreparedStatements) {
        this.maxOpenPreparedStatements = maxOpenPreparedStatements;
    }
 
    public Integer getMaxPoolPreparedStatementPerConnectionSize() {
        return maxPoolPreparedStatementPerConnectionSize;
    }
 
    public void setMaxPoolPreparedStatementPerConnectionSize(Integer maxPoolPreparedStatementPerConnectionSize) {
        this.maxPoolPreparedStatementPerConnectionSize = maxPoolPreparedStatementPerConnectionSize;
    }
 
    public String getFilters() {
        return filters;
    }
 
    public void setFilters(String filters) {
        this.filters = filters;
    }
 
    public String getPublicKey() {
        return publicKey;
    }
 
    public void setPublicKey(String publicKey) {
        this.publicKey = publicKey;
    }
 
    public String getConnectionProperties() {
        return connectionProperties;
    }
 
    public void setConnectionProperties(String connectionProperties) {
        this.connectionProperties = connectionProperties;
    }
}
分享到:
评论

相关推荐

    SpringBoot(七)SpringBoot整合Druid实现数据库密码加密.pdf

    为了加密数据库密码,我们将使用Druid提供的`ConfigTools`工具类来生成公钥和私钥,并实现加密和解密的功能。 ##### 3.1 创建 DecryptDruid 类 在`src/main/java`目录下创建一个名为`DecryptDruid`的类,该类将...

    Springboot项目对数据库用户名密码实现加密过程解析

    本文详细介绍了如何在Springboot项目中实现数据库用户名密码的加密过程,包括使用jasypt库对密码进行加密、配置加密后的密码密文到Spring Boot配置文件中,以及设置加密的秘钥环境变量。希望本文能够对大家的学习和...

    SpringBoot整合Mybatis使用Druid数据库连接池

    SpringBoot 整合 Mybatis 使用 Druid 数据库连接池 Spring Boot 是一个基于 Java 的框架,提供了快速开发和生产级别的应用程序的能力。Mybatis 是一个基于 Java 的持久层框架,提供了对数据库的访问和操作的能力。...

    数据库密码配置加密操作步骤.doc

    数据库密码配置加密操作步骤 Spring Boot 中数据库账号密码加密操作是指在 Spring Boot ...数据库密码配置加密操作是保护数据库账号密码的重要手段,通过使用 Jasypt 或 Druid 等加密库,可以有效地保护敏感信息。

    毕业设计-SpringBoot+druid+mysql毕业设计管理系统.zip

    本项目——“SpringBoot+Druid+MySQL毕业设计管理系统”便是一个实例,它充分利用了现代Java开发框架SpringBoot、高性能数据库MySQL以及优秀的数据源连接池Druid,旨在打造一个高效、稳定且易于维护的系统。...

    SpringBoot配置文件中数据库密码加密两种方案(推荐)

    本文将介绍两种在SpringBoot配置文件中对数据库密码进行加密的方法:使用Jasypt库进行加密和利用Druid数据连接池的内置加密功能。 **Jasypt加密** Jasypt是一个强大的Java加密库,易于集成到Spring Boot项目中。...

    SpringBoot整合Druid应用的方法详解.docx

    Druid的数据源配置可以增强系统的监控和管理能力,例如,你可以配置StatFilter插件来跟踪SQL执行性能,使用PasswordCallback来加密数据库密码,确保安全性。同时,Druid还支持SQL执行日志,通过Common-Logging、Log4...

    springboot配置druid连接池的方法示例

    Druid 是一个功能强大、性能高效的数据库连接池,它提供了多种功能,如监控数据库访问性能、数据库密码加密、SQL 执行日志等。下面将介绍如何在 Spring Boot 项目中配置 Druid 连接池。 Druid 的简介 Druid 是阿里...

    Java SpringBoot+Mybatis+Druid+Shiro

    在SpringBoot应用中,Druid可以作为数据源,有效管理数据库连接,提高数据库操作性能。通过其内置的监控界面,开发者可以实时查看数据库连接状态,监控SQL执行效率,便于优化数据库操作。 **Shiro** Apache Shiro是...

    SpringBoot Druid配置过程图解

    在SpringBoot项目中使用Druid连接池可以实现多种功能,例如监控数据库访问性能、替换传统的DBCP和C3P0连接池中间件、数据库密码加密、SQL执行日志和扩展JDBC。Druid提供了一个高效、功能强大、可扩展性好的数据库...

    SpringBoot-mybaits-druid-swagger

    标题中的"SpringBoot-mybaits-druid-swagger"是一个典型的微服务开发组合,涉及四个主要技术:Spring Boot、MyBatis、Druid和Swagger。这些技术在Java Web开发中广泛使用,尤其在构建高效、易维护的RESTful API时。 ...

    SpringBoot+MyBatis+Druid+PageHelper实现多数据源并分页.docx

    Druid提供监控数据库访问性能的能力,支持SQL执行日志,以及数据库密码加密等功能。在实际应用中,Druid可以通过Maven依赖加入项目,只需在pom.xml文件中添加对应的Druid依赖即可。 配置Druid连接池时,我们可以在`...

    基于SpringBoot电影管理系统源码+数据库(毕业设计).zip

    密码加密数据库连接池:druid分页插件:pageHelpervue安装对应的版本:nodejs 14.xxnpm 6.xxvue 2.x基于SpringBoot电影管理系统源码+数据库(毕业设计).zip 该项目是个人高分毕业设计项目源码,已获导师指导认可通过...

    SpringBoot使用Ajax实现登录

    在Spring Boot应用中,使用Ajax实现登录功能是一个常见的需求,它可以提供无刷新的用户体验,...在实际开发中,还需要考虑安全性(如CSRF防护、密码加密等)、错误处理和日志记录等方面,以确保应用的安全性和稳定性。

    springboot实现注册加密与登录解密功能(demo)

    SQL Yog 是一个功能强大的数据库管理工具,提供了许多实用的功能,例如,数据库设计、数据库优化、数据库备份等。 本文详细介绍了 Spring Boot 实现注册加密与登录解密功能的步骤,包括项目结构、依赖关系管理、...

    springboot之集成mybatis mongo shiro druid redis jsp

    在SpringBoot应用中,Druid可以作为数据源,提高数据库操作的性能和稳定性,同时其内置的监控功能可以帮助开发者实时了解数据库连接状态。 5. **Redis**:Redis是一个高速的键值存储系统,常被用作缓存和消息队列。...

    springboot整合shiro、redis、druid 源码下载

    spring-boot项目整合shiro权限框架,实现了登录认证、权限认证、密码加密、rememberMe、验证码、登录次数过多限制功能 整合redis,使用缓存注解,不用每次都查询数据库 整合druid,页面上监控sql语句的执行情况 git项目...

    详解SpringBoot配置连接池

    3. **数据库密码加密**:支持PasswordCallback,增强安全性。 4. **SQL执行日志**:通过LogFilter支持多种日志框架,便于监控数据库访问情况。 5. **可扩展性**:通过Filter-Chain机制,可以方便地编写JDBC层的扩展...

    springboot整合

    SpringBoot整合Mybatis,通常会使用Mybatis-Spring-Boot-Starter,配合Mapper和PageHelper插件,实现数据库操作的简单高效。 **3. Druid数据源** Druid是阿里巴巴开源的一个高性能、扩展性良好的数据库连接池。...

    spring boot配置druid连接池的完整步骤

    Spring Boot 配置 Druid 连接池的完整步骤 Spring Boot 是一个基于 Java 的开源... Druid 连接池提供了许多功能强大的功能,如监控数据库访问性能、数据库密码加密、SQL 执行日志等,可以满足大多数应用程序的需求。

Global site tag (gtag.js) - Google Analytics