為Hibernate配置文件加密的三套解決方案(二):
?
轉自: http://sklst.javaeye.com/blog/284689
提要:本文將詳細介紹使用
Jasypt
的加密功能為Hibernate配置文件加密?
首先來了解什么是Jasypt
你可以從
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壓縮包的bin目錄中有如下文件:
decrypt.sh?
digest.bat?
digest.sh?
encrypt.bat?
encrypt.sh?
jasypt-cli-bundle.jar?
README_IMPORTANT.txt
我們要用到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 > ??
上面標注的地方是必須的,其他可以按照自己的實際配置,重新編譯項目,就完成了。
?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
