如何對(duì)Hibernate.cfg.xml中的用戶名和密碼進(jìn)行加密
本文講述的是如何對(duì)Hibernate.cfg.xml中的用戶名和密碼進(jìn)行加密,想必你一定對(duì)此很感興趣。下面是詳細(xì)的的介紹。
如果在Hibernate.cfg.xml配置的用戶名和密碼配置如下:
- <!--連接數(shù)據(jù)庫(kù)的用戶名-->
- <property name="connection.username">sa</property>
- <!--連接數(shù)據(jù)庫(kù)的密碼-->
- <property name="connection.password">123</property>
那怎么感覺(jué)都有點(diǎn)不爽,因?yàn)槿绻@樣數(shù)據(jù)庫(kù)的用戶名和密碼一下就給別人知道了,有極大的安全隱患,特別是金融系統(tǒng)中,這樣的配置更應(yīng)該避免。
我這里采用對(duì)Hibernate的源碼進(jìn)行修改的方式(當(dāng)然這里的源碼最好是和用戶當(dāng)前使用的Hibernate版本相一致,免得到時(shí)又引起版本不同的問(wèn)題),以起到對(duì)連接的用戶名和密碼進(jìn)行加密碼的方式,修改右如下:
- <!--連接數(shù)據(jù)庫(kù)的用戶名-->
- <property name="connection.username">c92b81768388f76d</property>
- <!--連接數(shù)據(jù)庫(kù)的密碼-->
- <property name="connection.password">1f65866187612115</property>
準(zhǔn)備一個(gè)Encode.java,該JAVA實(shí)現(xiàn)加密encode和解密方法decode,加密和解密是配對(duì)的,先用其加密方法encode對(duì)其加密處理,用戶名和密碼就成了上面的方式,將Encode.java放到org.hibernate.util包下,在類org.hibernate.connection.DriverManagerConnectionProvider的configure方法中,先加上對(duì)用戶名和密碼解密的程序,,加到該方法的最上面,如下:
- public void configure(Properties props) throws HibernateException {
- String user = props.getProperty(Environment.USER);
- String password = props.getProperty(Environment.PASS);
- try {
- //對(duì)用戶名進(jìn)行解密
- props.setProperty(Environment.USER, Encode.decode(user));
- //對(duì)密碼進(jìn)行解密
- props.setProperty(Environment.PASS, Encode.decode(password));
- } catch (Exception e1) {
- // TODO Auto-generated catch block
- e1.printStackTrace();
- }
- //...
- }
這里在后面的處理之前,先解密,就達(dá)到了加密解密的效果,再打包發(fā)布就OK了。就這么簡(jiǎn)單,想必你已經(jīng)學(xué)會(huì)了如何對(duì)Hibernate.cfg.xml中的用戶名和密碼進(jìn)行加密了,自己試一試吧。
【編輯推薦】