免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
Hibernate的配置文件中用戶和密碼的加密

 hibernate.cfg.xml中,用戶和密碼是明文存放的,存放某些安全問題,想了一個辦法加密些用戶和密碼的信息。

 

首先創(chuàng)建一個連接供應器,配置文件里的參數(shù)解釋都是此類負責,所以,只要在此類中進行密文解密即可。

  1. public class CustomDriverManagerConnectionProvider extends
  2.         Provider {
  3.     public CustomDriverManagerConnectionProvider() {
  4.         super();
  5.     }
  6.     /*
  7.      * (non-Javadoc)
  8.      * 
  9.      * @see org.hibernate.connection.DriverManagerConnectionProvider#configure(java.util.Properties)
  10.      */
  11.     @Override
  12.     public void configure(Properties props) throws HibernateException {
  13.         String user = props.getProperty(Environment.USER);
  14.         String password = props.getProperty(Environment.PASS);
  15.         props.setProperty(Environment.USER, SecUtil.decrypt(user));
  16.         props.setProperty(Environment.PASS, SecUtil.decrypt(password));
  17.         super.configure(props);
  18.     }
  19. }

 

再寫一個類,使用AES負責字符串的加密與解密

  1. /**
  2.  * AES加密工具
  3.  * 
  4.  * @author Bany
  5.  * 
  6.  * @version 創(chuàng)建時間:2008-8-5 上午10:58:16
  7.  * 
  8.  */
  9. public class SecUtil {
  10.     private static byte[] keybytes = { 0x31, 0x32, …… };
  11.     public static void main(String[] args) throws Exception {
  12.         String e1 = encrypt("newpassword");
  13.         System.out.println(e1);
  14.         String e2 = decrypt(e1);
  15.         System.out.println(e2);
  16.     }
  17.     /**
  18.      * 加密
  19.      * @param value
  20.      * @return
  21.      */
  22.     public static String encrypt(String value) {
  23.         
  24.         String s=null;
  25.         int mode = Cipher.ENCRYPT_MODE;
  26.         try {
  27.             Cipher cipher = initCipher(mode);
  28.             byte[] outBytes = cipher.doFinal(value.getBytes());
  29.             s = String.valueOf(Hex.encodeHex(outBytes));
  30.         } catch (Exception e) {
  31.             e.printStackTrace();
  32.         }
  33.         return s;
  34.     }
  35.     /**
  36.      * 解密
  37.      * @param value
  38.      * @return
  39.      */
  40.     public static String decrypt(String value) {
  41.         String s = null;
  42.         int mode = Cipher.DECRYPT_MODE;
  43.         try {
  44.             Cipher cipher = initCipher(mode);
  45.             byte[] outBytes = cipher.doFinal(Hex.decodeHex(value.toCharArray()));
  46.             s = new String(outBytes);
  47.         } catch (Exception e) {
  48.             e.printStackTrace();
  49.         }
  50.         return s;
  51.     }
  52.     
  53.     private static Cipher initCipher(int mode) throws NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException{
  54.         Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
  55.         Key key = new SecretKeySpec(keybytes, "AES");
  56.         cipher.init(mode, key);
  57.         return cipher;
  58.     }
  59. }

調(diào)用SecUtil.encrypt的方法,把用戶密碼加密生成密文,然后根據(jù)密文修改hibernate.cfg.xml文件

 

  1. <property name="connection.username">c59cd98</property>
  2. <property name="connection.password">68e32593ea5943a6a</property>
  3. <property name="connection.provider_class">bany.CustomDriverManagerConnectionProvider</property>

第一二行是加密后的密文,第三行是使用自定義的連接器

 

 

PS:如果使用第三方的連接器,CustomDriverManagerConnectionProvider則需要繼承于相應的連接器,如C3P0ConnectionProvider

 

 

  hibernate.cfg.xml中,用戶和密碼是明文存放的,存放某些安全問題,想了一個辦法加密些用戶和密碼的信息。

 

首先創(chuàng)建一個連接供應器,配置文件里的參數(shù)解釋都是此類負責,所以,只要在此類中進行密文解密即可。

  1. public class CustomDriverManagerConnectionProvider extends
  2.         Provider {
  3.     public CustomDriverManagerConnectionProvider() {
  4.         super();
  5.     }
  6.     /*
  7.      * (non-Javadoc)
  8.      * 
  9.      * @see org.hibernate.connection.DriverManagerConnectionProvider#configure(java.util.Properties)
  10.      */
  11.     @Override
  12.     public void configure(Properties props) throws HibernateException {
  13.         String user = props.getProperty(Environment.USER);
  14.         String password = props.getProperty(Environment.PASS);
  15.         props.setProperty(Environment.USER, SecUtil.decrypt(user));
  16.         props.setProperty(Environment.PASS, SecUtil.decrypt(password));
  17.         super.configure(props);
  18.     }
  19. }

 

再寫一個類,使用AES負責字符串的加密與解密

  1. /**
  2.  * AES加密工具
  3.  * 
  4.  * @author Bany
  5.  * 
  6.  * @version 創(chuàng)建時間:2008-8-5 上午10:58:16
  7.  * 
  8.  */
  9. public class SecUtil {
  10.     private static byte[] keybytes = { 0x31, 0x32, …… };
  11.     public static void main(String[] args) throws Exception {
  12.         String e1 = encrypt("newpassword");
  13.         System.out.println(e1);
  14.         String e2 = decrypt(e1);
  15.         System.out.println(e2);
  16.     }
  17.     /**
  18.      * 加密
  19.      * @param value
  20.      * @return
  21.      */
  22.     public static String encrypt(String value) {
  23.         
  24.         String s=null;
  25.         int mode = Cipher.ENCRYPT_MODE;
  26.         try {
  27.             Cipher cipher = initCipher(mode);
  28.             byte[] outBytes = cipher.doFinal(value.getBytes());
  29.             s = String.valueOf(Hex.encodeHex(outBytes));
  30.         } catch (Exception e) {
  31.             e.printStackTrace();
  32.         }
  33.         return s;
  34.     }
  35.     /**
  36.      * 解密
  37.      * @param value
  38.      * @return
  39.      */
  40.     public static String decrypt(String value) {
  41.         String s = null;
  42.         int mode = Cipher.DECRYPT_MODE;
  43.         try {
  44.             Cipher cipher = initCipher(mode);
  45.             byte[] outBytes = cipher.doFinal(Hex.decodeHex(value.toCharArray()));
  46.             s = new String(outBytes);
  47.         } catch (Exception e) {
  48.             e.printStackTrace();
  49.         }
  50.         return s;
  51.     }
  52.     
  53.     private static Cipher initCipher(int mode) throws NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException{
  54.         Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
  55.         Key key = new SecretKeySpec(keybytes, "AES");
  56.         cipher.init(mode, key);
  57.         return cipher;
  58.     }
  59. }

調(diào)用SecUtil.encrypt的方法,把用戶密碼加密生成密文,然后根據(jù)密文修改hibernate.cfg.xml文件

 

  1. <property name="connection.username">c59cd98</property>
  2. <property name="connection.password">68e32593ea5943a6a</property>
  3. <property name="connection.provider_class">bany.CustomDriverManagerConnectionProvider</property>

第一二行是加密后的密文,第三行是使用自定義的連接器

 

 

PS:如果使用第三方的連接器,CustomDriverManagerConnectionProvider則需要繼承于相應的連接器,如C3P0ConnectionProvider

 

 

 

本站僅提供存儲服務,所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
安卓項目實戰(zhàn)之:Android常用的5種加密方式
php與java通用AES加密解密算法
前后端分離架構(gòu)中的接口安全(上篇)
應用AES技術(shù)加密/解密字符串
Java http數(shù)據(jù)加密和文件上傳
Java與Delphi交叉DES加解密的問題
更多類似文章 >>
生活服務
分享 收藏 導長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服