为Hibernate配置文件加密的三套解决方案(二)

提要:本文将详细介绍使用[url=http://www.jasypt.org/]Jasypt[/url]的加密功能为Hibernate配置文件加密

首先来了解什么是Jasypt
[quote]Jasypt这个Java类包为开发人员提供一种简单的方式来为项目增加加密功能,包括:密码Digest认证,文本和对象加密,集成hibernate,Spring Security(Acegi)来增强密码管理。 [/quote]

你可以从[url=http://sourceforge.net/project/showfiles.php?group_id=183612]SourceForge.net下载[/url]最新的Jasypt(目前的最新版本是1.5)
另外,使用Jasypt还需要几个Jar包的支持,分别是:
commons-codec-1.1.jar 和 commons-lang-2.1.jar这在你下载Jasypt压缩包的lib目录里已经附带了,如果你是Java SE 5或更早的版本,就需要[url=http://www.icu-project.org/]ICU3.4.4[/url]或更高版本的支持,这些文件都可以在Jasypt网站的[url=http://www.jasypt.org/dependencies.html]Dependencies[/url]项下找到。

另外,我们要了解一下Jasypt的加密方式,Jasypt提供了多种的加密方式,更允许用户自己编写加密方法,或使用Java增强加密算法(譬如 TripleDES)也可添加相应的包来扩展。
这里只介绍Jasypt默认的加密方法,其他方法感兴趣的朋友可以自己去研究;
Jasypt默认使用了对称加密的方法,即加密密钥和解密密钥是相同的,流程如下
[quote]明文(可以是要加密的密码) + 密钥 =Jasypt默认算法=> 密文[/quote]
解密过程与之相反
为了得到密文,我们先要使用[url=http://www.jasypt.org/cli.html]Jasypt自带的工具[/url],在下载Jasypt压缩包的bin目录中有如下文件:
[quote]decrypt.bat
decrypt.sh
digest.bat
digest.sh
encrypt.bat
encrypt.sh
jasypt-cli-bundle.jar
README_IMPORTANT.txt[/quote]
我们要用到encrypt命令来实现上面的过程加密明文,命令如下:
 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>

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

另:[url=http://sklst.iteye.com/blog/283798]第一种重载连接供应器[/url]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值