读书人

替Hibernate配置文件加密的三套解决方

发布时间: 2012-10-24 14:15:58 作者: rapoo

为Hibernate配置文件加密的三套解决方案(二)
提要:本文将详细介绍使用Jasypt的加密功能为Hibernate配置文件加密

首先来了解什么是Jasypt
encrypt input=明文(可以是密码) password=密钥
上面的明文和密钥都不要加引号,output就是需要的密文,将其记录下来
得到密文以后,工作就很简单了

首先在你的项目中添加需要的包(jasypt-1.5.jar, commons-codec-1.1.jar, commons-lang-2.1.jar, icu4j-4_0.zip)
之后修改hibernate.cfg.xml文件

<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE hibernate-configuration PUBLIC    "-//Hibernate/Hibernate Configuration DTD//EN"    "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">    <hibernate-configuration>  <session-factory>        <property name="connection.provider_class">      org.jasypt.hibernate.connectionprovider.EncryptedPasswordDriverManagerConnectionProvider    </property> <!-- 这个是添加的provider类 -->    <property name="connection.encryptor_registered_name">      configurationHibernateEncryptor    </property> <!-- 这里是加密密钥 -->        <property name="connection.url">jdbc:mysql://localhost/reportsdb</property>    <property name="connection.driver_class">com.mysql.jdbc.Driver</property>    <property name="connection.username">reportsUser</property>    <property name="connection.password">ENC(G6N718UuyPE5bHyWKyuLQSm02auQPUtm)</property><!-- 这里的格式是ENC(密文) -->    <property name="connection.pool_size">12</property>    <property name="show_sql">true</property>    <property name="dialect">org.hibernate.dialect.MySQLDialect</property>        <!-- Mappings etc... -->           </session-factory></hibernate-configuration>

上面标注的地方是必须的,其他可以按照自己的实际配置,重新编译项目,就完成了。

另:第一种重载连接供应器

不明白为什么要加密呢~~ 2 楼 lsk 2008-12-03 whaosoft 写道
不明白为什么要加密呢~~

hbm.xml直接暴露了你所有的数据模型. 3 楼 sklst 2008-12-03 whaosoft 写道
不明白为什么要加密呢~~

这个嘛。。。很多状况的,比如你和其他开发组共用一个测试服务器,公用的帐号登陆,虽然知道其他人不会去动你数据库里的东西,但是为防万一还是加上密码比较好;或者是你的程序是托管发布的,放在别人的服务器上,加密也能减少一些麻烦;我是第一种情况。 4 楼 jbeduhai 2008-12-03 加密有什么好处呢?
5 楼 sklst 2008-12-04 jbeduhai 写道
加密有什么好处呢?


除了提高一定的安全性,没有看成能在性能上有多大的改进,但是,我介绍的第三种方法,使用连接池确实可以改进整体的效率。

读书人网 >软件架构设计

热点推荐