加密工具解决方案

系统 1808 0

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

 

转自: http://sklst.javaeye.com/blog/284689

提要:本文将详细介绍使用 Jasypt 的加密功能为Hibernate配置文件加密 

首先来了解什么是Jasypt

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



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

另外,我们要了解一下Jasypt的加密方式,Jasypt提供了多种的加密方式,更允许用户自己编写加密方法,或使用Java增强加密算法(譬如 TripleDES)也可添加相应的包来扩展。 
这里只介绍Jasypt默认的加密方法,其他方法感兴趣的朋友可以自己去研究; 
Jasypt默认使用了对称加密的方法,即加密密钥和解密密钥是相同的,流程如下

引用
明文(可以是要加密的密码) + 密钥 =Jasypt默认算法=> 密文


解密过程与之相反 
为了得到密文,我们先要使用 Jasypt自带的工具 ,在下载Jasypt压缩包的bin目录中有如下文件:

引用
decrypt.bat 
decrypt.sh 
digest.bat 
digest.sh 
encrypt.bat 
encrypt.sh 
jasypt-cli-bundle.jar 
README_IMPORTANT.txt


我们要用到encrypt命令来实现上面的过程加密明文,命令如下:

Console代码 
  1. 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代码 
  1. <? xml   version = "1.0"   encoding = "utf-8" ?>    
  2. <!DOCTYPE hibernate-configuration PUBLIC   
  3.     "-//Hibernate/Hibernate Configuration DTD//EN"   
  4.     "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd" >   
  5.        
  6. < hibernate-configuration >   
  7.    < session-factory >   
  8.        
  9.      < property   name = "connection.provider_class" >   
  10.        org.jasypt.hibernate.connectionprovider.EncryptedPasswordDriverManagerConnectionProvider   
  11.      </ property >   <!-- 这个是添加的provider类 -->   
  12.      < property   name = "connection.encryptor_registered_name" >   
  13.        configurationHibernateEncryptor   
  14.      </ property >   <!-- 这里是加密密钥 -->   
  15.        
  16.      < property   name = "connection.url" > jdbc:mysql://localhost/reportsdb </ property >   
  17.      < property   name = "connection.driver_class" > com.mysql.jdbc.Driver </ property >   
  18.      < property   name = "connection.username" > reportsUser </ property >   
  19.      < property   name = "connection.password" > ENC(G6N718UuyPE5bHyWKyuLQSm02auQPUtm) </ property > <!-- 这里的格式是ENC(密文) -->   
  20.      < property   name = "connection.pool_size" > 12 </ property >   
  21.   
  22.      < property   name = "show_sql" > true </ property >   
  23.      < property   name = "dialect" > org.hibernate.dialect.MySQLDialect </ property >   
  24.        
  25.      <!-- Mappings etc... -->   
  26.            
  27.     </ session-factory >   
  28. </ hibernate-configuration >   


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

 

加密工具解决方案


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论