Hibernate配置文件hibernate.cfg.xml中存放了我们连接数据库的相关信息,其中设计到许多数据库的敏感信息,比如连接地址,用户名和密码,有时候我们交由发布组进行发布时并不希望他们看到数据库的连接密码,就需要对hibernate配置文件中的部分信息进行加密,我在解决这一问题中实践了三种方法,第一种是重载连接供应器,第二种是使用Hibernate官方推荐的Jasypt,第三种其实算不上是加密,而是使用WebLogic连接池将相关信息放在WebLogic的配置中,下面会具体阐述这三种方法。
第一种重载连接供应器:
这种方法是我在网上看到的,原文连接是:
http://blog.csdn.net/sdbany/archive/2008/10/23/3132809.aspx
但是在实际使用的时候发现代码有问题,可能是作者没有贴全,所以有些功能无法实现,于是我重新写了代码。
首先创建一个连接供应器,配置文件里的参数解释都是此类负责,所以,只要在此类中进行密文解密即可。
再写一个类,使用AES负责字符串的加密与解密这里我们参照原作者的方法
当然,你也可以使用自己写的加密方法,或者是Java官方推荐的一些加密方法
调用SecUtil.encrypt的方法,把用户密码加密生成密文,然后根据密文修改hibernate.cfg.xml文件
第一二行是加密后的密文,第三行是使用自定义的连接器
如果使用第三方的连接器,CustomDriverManagerConnectionProvider则需要继承于相应的连接器,如C3P0ConnectionProvider
第二种:使用Hibernate官方推荐的Jasypt