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

        <!--連接數據庫的用户名-->

        <property name="connection.username">sa</property>

        <!--連接數據庫的密碼-->

        <property name="connection.password">123</property>

那怎麼感覺都有點不爽,因為如果這樣數據庫的用户名和密碼一下就給別人知道了,有極大的安全隱患,特別是金融系統中,這樣的配置更應該避免。

我這裏採用對Hibernate的源碼進行修改的方式(當然這裏的源碼最好是和用户當前使用的Hibernate版本相一致,免得到時又引起版本不同的問題),以起到對連接的用户名和密碼進行加密碼的方式,修改右如下:

        <!--連接數據庫的用户名-->

        <property name="connection.username">c92b81768388f76d</property>

        <!--連接數據庫的密碼-->

        <property name="connection.password">1f65866187612115</property>

準備一個Encode.java,該JAVA實現加密encode和解密方法decode,加密和解密是配對的,先用其加密方法encode對其加密處理,用户名和密碼就成了上面的方式,將Encode.java放到org.hibernate.util包下,在類org.hibernate.connection.DriverManagerConnectionProvider的configure方法中,先加上對用户名和密碼解密的程序,,加到該方法的最上面,如下:

public void configure(Properties props) throws HibernateException {
 
String user = props.getProperty(Environment.USER); 
        String password = props.getProperty(Environment.PASS); 
        try {
         //對用户名進行解密
props.setProperty(Environment.USER, Encode.decode(user));
         //對密碼進行解密
props.setProperty(Environment.PASS, Encode.decode(password)); 
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} 
//...


這裏在後面的處理之前,先解密,就達到了加密解密的效果。

再打包發佈就OK了。