给hibernate配置文件加密解密的方案

原创 2012年03月29日 15:18:38

Hibernate配置文件hibernate.cfg.xml中存放了我们连接数据库的相关信息,其中设计到许多数据库的敏感信息,比如连接地址,用户名和密码,有时候我们交由发布组进行发布时并不希望他们看到数据库的连接密码,就需要对hibernate配置文件中的部分信息进行加密

 

给hibernate配置文件加密解密的方案的方案有很多。

 

第一步:新建自定义的SessionFactionBean,并继承AnnotationSessionFactoryBean

package com;
import javax.sql.DataSource;
import org.apache.commons.dbcp.BasicDataSource;
import org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean;

public class ZtkjAnnotationSessionFactoryBean extends AnnotationSessionFactoryBean {

	@Override
	public void setDataSource(DataSource dataSource) {
		String password =((BasicDataSource) dataSource).getPassword();  
		//通过ZtkjCryptUtil类进行解密    
		String decryPassword = ZtkjCryptUtil.decodeStr(password);   
		//重新赋值
		((BasicDataSource) dataSource).setPassword(decryPassword);  
		super.setDataSource(dataSource);
	}	
}

ZtkjCryptUtil.java是加密和解密类(DES对称加密,大家自己可以写我)


第二步:修改Spring配置文件

	<!-- Hibernate配置 -->
	<bean id="sessionFactory" class="com.ZtkjAnnotationSessionFactoryBean">
		<property name="dataSource" ref="dataSource" />
		<property name="namingStrategy">
			<bean class="org.hibernate.cfg.ImprovedNamingStrategy" />
		</property>
		<property name="hibernateProperties">
			<props>
				<prop key="hibernate.dialect">${hibernate.dialect}</prop>
				<prop key="hibernate.show_sql">${hibernate.show_sql}</prop>
				<prop key="hibernate.format_sql">${hibernate.format_sql}</prop>
				<prop key="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</prop>
				<prop key="hibernate.cache.provider_configuration_file_resource_path">ehcache/ehcache-hibernate-local.xml</prop>
				<prop key="hibernate.connection.provider_class">com.ZtkjDriverManagerConnectionProvider</prop>
			</props>
		</property>
		<property name="packagesToScan" value="com.chinacnit" />
	</bean>

(注:仅修改了第一行代码 class="com.ZtkjAnnotationSessionFactoryBean")


 

这样就可以完成了加密配置文件,参考了http://www.lupaworld.com/tutorial-view-aid-1847.html

如果你的配置密码的地方配置在hibertate属性下面,可以参考http://aguu125.iteye.com/blog/579402

 

还有更好的方法,可惜没有弄出来。http://sklst.iteye.com/blog/283798 (方案一)

这博客里面提到的【连接供应器】,不知道那里没有配置好,总是没有进去自己建的【连接供应器】

 

 

hibernate配置用户名密码加密

1 我使用的数据库连接池是c3p0, 即hibernate的配置为: hibernate.connection.provider_class org.hibernate.connectio...
  • u014173568
  • u014173568
  • 2015年07月02日 11:09
  • 563

如何实现数据库连接的密码加密

本文转载自:http://zrpingfan.blog.sohu.com/113136684.html    项目需求 : 所有认证数据,例如密码,不论是在储存、传输中都必须妥善保护,以防泄露或...
  • yezi1305
  • yezi1305
  • 2012年11月08日 10:37
  • 4256

Hibernate的配置文件中用户和密码的加密

 hibernate.cfg.xml中,用户和密码是明文存放的,存放某些安全问题,想了一个办法加密些用户和密码的信息。 首先创建一个连接供应器,配置文件里的参数解释都是此类负责,所以,只要在此类中进行...
  • sdbany
  • sdbany
  • 2008年10月23日 23:34
  • 6253

Spring+Hibernate 数据库配置信息的加密

在hibernate.cfg.xml中,用户和密码是明文存放的,存放某些安全问题,可以重写dataSource类来实现对配置信息加密的解密方法 ...
  • white_cd
  • white_cd
  • 2015年08月19日 11:32
  • 980

JAVA,hibernate配置文件加密

1.hibernate配置文件
  • icoudsoft_saas
  • icoudsoft_saas
  • 2015年07月15日 15:22
  • 540

hibernate的hibernate.cfg.xml的用户名密码加密

原文:http://blog.csdn.net/sdbany/article/details/3132809 hibernate的cfg.xml配置文件用户名密码是明文存放,配置文件里的参数信息解析...
  • fuck487
  • fuck487
  • 2017年08月01日 13:58
  • 226

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

Druid的功能1、替换DBCP和C3P0。Druid提供了一个高效、功能强大、可扩展性好的数据库连接池。2、可以监控数据库访问性能,Druid内置提供了一个功能强大的StatFilter插件,能够详...
  • u010870518
  • u010870518
  • 2016年04月27日 15:08
  • 15153

关于SSH框架整合中,数据库配置文件加密解决思路记载

在SSH框架项目中,如果遇到客户需要加密数据库配置文件(jdbc.properties等),规定用户名或者密码不能以明文的形式出现在配置文件中。该问题可以通过重写spring的processPrope...
  • u014496829
  • u014496829
  • 2016年06月13日 19:43
  • 1281

Struts2+hibernate实现用户登录和增删改查案例

Struts2+hibernate实现用户登录和增删改查案例 开发工具MyEclipse 10.7.1 创建一个项目 web项目project。 部署好Str...
  • kite30
  • kite30
  • 2016年01月29日 11:17
  • 2528

JAVA,hibernate配置文件加密

1.hibernate配置文件
  • icoudsoft_saas
  • icoudsoft_saas
  • 2015年07月15日 15:22
  • 540
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:给hibernate配置文件加密解密的方案
举报原因:
原因补充:

(最多只允许输入30个字)