如何对Hibernate.cfg.xml中的用户名和密码进行加密

本文讲述的是如何对Hibernate.cfg.xml中的用户名和密码进行加密,想必你一定对此很感兴趣。下面是详细的的介绍。

如果在Hibernate.cfg.xml配置的用户名和密码配置如下:

 
 
 
  1. <!--连接数据库的用户名-->  
  2. <property name="connection.username">sa</property>  
  3. <!--连接数据库的密码-->  
  4. <property name="connection.password">123</property> 

那怎么感觉都有点不爽,因为如果这样数据库的用户名和密码一下就给别人知道了,有极大的安全隐患,特别是金融系统中,这样的配置更应该避免。

我这里采用对Hibernate的源码进行修改的方式(当然这里的源码最好是和用户当前使用的Hibernate版本相一致,免得到时又引起版本不同的问题),以起到对连接的用户名和密码进行加密码的方式,修改右如下:

 
 
 
  1. <!--连接数据库的用户名-->  
  2. <property name="connection.username">c92b81768388f76d</property>  
  3. <!--连接数据库的密码-->  
  4. <property name="connection.password">1f65866187612115</property> 

准备一个Encode.java,该JAVA实现加密encode和解密方法decode,加密和解密是配对的,先用其加密方法encode对其加密处理,用户名和密码就成了上面的方式,将Encode.java放到org.hibernate.util包下,在类org.hibernate.connection.DriverManagerConnectionProvider的configure方法中,先加上对用户名和密码解密的程序,,加到该方法的最上面,如下:

 
 
 
  1. public void configure(Properties props) throws HibernateException {  
  2. String user = props.getProperty(Environment.USER);   
  3.          String password = props.getProperty(Environment.PASS);   
  4.         try {  
  5.          //对用户名进行解密  
  6. props.setProperty(Environment.USER, Encode.decode(user));  
  7.          //对密码进行解密  
  8. props.setProperty(Environment.PASS, Encode.decode(password));   
  9. catch (Exception e1) {  
  10. // TODO Auto-generated catch block  
  11. e1.printStackTrace();  
  12. }   
  13. //...  

这里在后面的处理之前,先解密,就达到了加密解密的效果,再打包发布就OK了。就这么简单,想必你已经学会了如何对Hibernate.cfg.xml中的用户名和密码进行加密了,自己试一试吧。

 

【编辑推荐】

  1. Hibernate一对多关系的处理
  2. Hibernate的性能优化
  3. 强人Hibernate文档笔记(上)
  4. 强人Hibernate文档笔记(中)
  5. 强人Hibernate文档笔记(下)
THE END