`
kengun
  • 浏览: 15871 次
社区版块
存档分类
最新评论

Druid连接池自定义数据库密码加解密的实现

阅读更多

1、首先配置Druid的数据库连接池

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
	xmlns:tx="http://www.springframework.org/schema/tx"
	xsi:schemaLocation="
			http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
			http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
			http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">

	<!-- 引入jdbc配置文件 -->
	<bean id="propertyConfigurer"
		class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
		<property name="locations">
			<list>
				<value>classpath*:jdbc.properties</value>
			</list>
		</property>
	</bean>

	<!--数据源加密操作 -->
	<bean id="dbPasswordCallback" class="com.waukeen.util.DBPasswordCallback"
		lazy-init="true" />

	<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"
		init-method="init" destroy-method="close" lazy-init="true">
		<property name="url" value="${url}" />
		<property name="username" value="${username}" />
		<property name="password" value="${password}" />
		<property name="driverClassName" value="${driver}" />
		<property name="initialSize" value="${initialSize}" />
		<property name="maxActive" value="${maxActive}" />
		<property name="maxWait" value="${maxWait}" />
		<property name="filters" value="stat" />
		<property name="connectionProperties" value="password=${password}" />
		<property name="passwordCallback" ref="dbPasswordCallback" />
	</bean>

</beans>

 

2、创建DruidPasswordCallback子类

         创建DBPasswordCallback类继承DruidPasswordCallback,并重写setProperties方法

 

package com.waukeen.util;

import java.util.Properties;

import com.alibaba.druid.util.DruidPasswordCallback;
import com.waukeen.security.Encode;

/**
 * 数据库回调密码解密
 * 
 * @author
 *
 */
@SuppressWarnings("serial")
public class DBPasswordCallback extends DruidPasswordCallback {

	public void setProperties(Properties properties) {
		super.setProperties(properties);
		String password = properties.getProperty("password");
		if (!Tools.isEmpty(password)) {
			// 解密数据库连接密码
			String pwd = Encode.decode(password);
			setPassword(pwd.toCharArray());
		}
	}

	public static void main(String[] args) {
                // 生成加密后的密码,放到jdbc.properties
		String pwd = Encode.encode("pwd");
		System.out.println(pwd);
	}
}

 

 

3、jdbc.properties的内容

 

#数据库连接地址
url=jdbc:mysql://127.0.0.1:3306/test
#用户名
username=root
#密码,这里的密码是你加密之后的密码!!!
password=XXXXX
#数据库连接驱动类
driver=com.mysql.jdbc.Driver
#定义初始连接数
initialSize=10
#定义最大连接数
maxActive=12
#定义最长等待时间
maxWait=5000

 

 

4、需要注意的地方

<!--数据源加密操作 -->
<bean id="dbPasswordCallback" class="com.waukeen.util.DBPasswordCallback" lazy-init="true" />


<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"
	init-method="init" destroy-method="close" lazy-init="true">
	<property name="url" value="${url}" />
	<property name="username" value="${username}" />
	<property name="password" value="${password}" />
	<property name="driverClassName" value="${driver}" />
	<property name="initialSize" value="${initialSize}" />
	<property name="maxActive" value="${maxActive}" />
	<property name="maxWait" value="${maxWait}" />
	<property name="filters" value="stat" />
	<!--传递password加密后的值到DBPasswordCallback,不能遗漏 -->
	<property name="connectionProperties" value="password=${password}" />
	<property name="passwordCallback" ref="dbPasswordCallback" />
</bean>
 

 

分享到:
评论

相关推荐

    druid实现springmvc数据库连接的用户名和密码加密

    标题"druid实现springmvc数据库连接的用户名和密码加密"指出,我们要讨论的是如何在Spring MVC项目中利用Druid连接池进行更高级别的安全性配置,即对数据库连接的敏感信息进行加密。这通常涉及以下步骤: 1. **密码...

    集成druid实现数据库密码加密功能.zip

    在实际开发中,数据库密码明文存储是一个安全隐患,为了保护这些敏感信息,我们可以利用Druid的数据源配置来实现密码加密。以下是一种常见的实现方式: 1. **密码加密**:首先,我们需要一个加密算法(如MD5、AES等...

    druid1.0.9密码加密

    Druid是阿里巴巴开源的一个强大、灵活且高性能的Java数据库连接池组件。在Druid 1.0.9版本中,为了增强数据库连接的安全性,引入了密码加密的功能。这个功能允许开发者将数据库的用户名和密码加密,从而在配置文件中...

    基于SpringMVC的一个web框架

    1.0.5 从web项目迁移成maven项目 1.0.6 增加菜单框架ext实现,类路径调整 1.0.7 ...1.0.8 socket工具类,权限组件,菜单组件,jdbc分页支持多种数据库,ant路径工具类,增加jquery easyUI ...使用数据库连接池druid dubbo使用

    基于Spring MVC的web框架 1.1.11

    使用数据库连接池druid dubbo使用 1.1.11 集成Spring Cache,FastJson Spring Cache增加redis缓存实现 Mybatis使用二级缓存,增加redis实现 增加reactJs 增加Mybatis插件pageHelper,Mapper doc内有相关文档

    一个可以直接运行的基于SpringMVC的web框架1.1.12

    使用数据库连接池druid dubbo使用 1.1.11 集成Spring Cache,FastJson Spring Cache增加redis缓存实现 Mybatis使用二级缓存,增加redis实现 增加reactJs 增加Mybatis插件pageHelper,Mapper 1.1.12 使用draft富文本编辑...

    可以直接运行的基于SpringMVC的web框架示例,也可以直接当公司框架

    使用数据库连接池druid dubbo使用 1.1.11 集成Spring Cache,FastJson Spring Cache增加redis缓存实现 Mybatis使用二级缓存,增加redis实现 增加reactJs 增加Mybatis插件pageHelper,Mapper 1.1.12 使用draft富文本编辑...

    JAVA上百实例源码以及开源项目源代码

    [ConfigLine.java] 控制条类 [RoundBox.java] 限定选择控件 [MonthMaker.java] 月份表算法类 [Pallet.java] 调色板,统一配色类 Java扫雷源码 Java生成自定义控件源代码 2个目标文件 Java实现HTTP连接与浏览,...

    java开源包4

    BoneCP 是一个高性能的开源java数据库连接池实现库。它的设计初衷就是为了提高数据库连接池的性能,根据某些测试数据发现,BoneCP是最快的连接池。BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加...

    java开源包3

    BoneCP 是一个高性能的开源java数据库连接池实现库。它的设计初衷就是为了提高数据库连接池的性能,根据某些测试数据发现,BoneCP是最快的连接池。BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加...

    java开源包1

    BoneCP 是一个高性能的开源java数据库连接池实现库。它的设计初衷就是为了提高数据库连接池的性能,根据某些测试数据发现,BoneCP是最快的连接池。BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加...

    java开源包11

    BoneCP 是一个高性能的开源java数据库连接池实现库。它的设计初衷就是为了提高数据库连接池的性能,根据某些测试数据发现,BoneCP是最快的连接池。BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加...

    java开源包2

    BoneCP 是一个高性能的开源java数据库连接池实现库。它的设计初衷就是为了提高数据库连接池的性能,根据某些测试数据发现,BoneCP是最快的连接池。BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加...

    java开源包6

    BoneCP 是一个高性能的开源java数据库连接池实现库。它的设计初衷就是为了提高数据库连接池的性能,根据某些测试数据发现,BoneCP是最快的连接池。BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加...

    java开源包5

    BoneCP 是一个高性能的开源java数据库连接池实现库。它的设计初衷就是为了提高数据库连接池的性能,根据某些测试数据发现,BoneCP是最快的连接池。BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加...

    java开源包10

    BoneCP 是一个高性能的开源java数据库连接池实现库。它的设计初衷就是为了提高数据库连接池的性能,根据某些测试数据发现,BoneCP是最快的连接池。BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加...

    java开源包8

    BoneCP 是一个高性能的开源java数据库连接池实现库。它的设计初衷就是为了提高数据库连接池的性能,根据某些测试数据发现,BoneCP是最快的连接池。BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加...

    java开源包7

    BoneCP 是一个高性能的开源java数据库连接池实现库。它的设计初衷就是为了提高数据库连接池的性能,根据某些测试数据发现,BoneCP是最快的连接池。BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加...

    java开源包9

    BoneCP 是一个高性能的开源java数据库连接池实现库。它的设计初衷就是为了提高数据库连接池的性能,根据某些测试数据发现,BoneCP是最快的连接池。BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加...

Global site tag (gtag.js) - Google Analytics