java加密庫
package com.cube.limail.util;
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;/**
 * 加密解密類
 */
 public  class  Eryptogram 
{
     private  static  String  Algorithm ="DES";
     private String key="CB7A92E3D3491964";
     //定義 加密演算法,可用 DES,DESede,Blowfish
     static  boolean  debug  = false ;
     /**
     * 構造子註解.
     */
     public  Eryptogram ()
    {
         
    } /**
     * 生成密鑰
     * @return byte[] 返回生成的密鑰
     * @throws exception 扔出異常.
     */
     public  static  byte [] getSecretKey () throws  Exception 
    {
         KeyGenerator  keygen  = KeyGenerator.getInstance (Algorithm );
         SecretKey  deskey  = keygen.generateKey ();
         System.out.println ("生成密鑰:"+bytesToHexString (deskey.getEncoded ()));
         if  (debug ) System.out.println ("生成密鑰:"+bytesToHexString (deskey.getEncoded ()));
         return  deskey.getEncoded ();
         
    } /**
     * 將指定的數據根據提供的密鑰進行加密
     * @param input 需要加密的數據
     * @param key 密鑰
     * @return byte[] 加密後的數據
     * @throws Exception
     */
     public  static  byte [] encryptData (byte [] input ,byte [] key ) throws  Exception 
    {
         SecretKey  deskey  = new  javax.crypto.spec.SecretKeySpec (key ,Algorithm );
         if  (debug )
        {
             System.out.println ("加密前的二進串:"+byte2hex (input ));
             System.out.println ("加密前的字元串:"+new  String (input ));
             
        } Cipher  c1  = Cipher.getInstance (Algorithm );
         c1.init (Cipher.ENCRYPT_MODE ,deskey );
         byte [] cipherByte =c1.doFinal (input );
         if  (debug ) System.out.println ("加密後的二進串:"+byte2hex (cipherByte ));
         return  cipherByte ;
         
    } /**
     * 將給定的已加密的數據通過指定的密鑰進行解密
     * @param input 待解密的數據
     * @param key 密鑰
     * @return byte[] 解密後的數據
     * @throws Exception
     */
     public  static  byte [] decryptData (byte [] input ,byte [] key ) throws  Exception 
    {
         SecretKey  deskey  = new  javax.crypto.spec.SecretKeySpec (key ,Algorithm );
         if  (debug ) System.out.println ("解密前的信息:"+byte2hex (input ));
         Cipher  c1  = Cipher.getInstance (Algorithm );
         c1.init (Cipher.DECRYPT_MODE ,deskey );
         byte [] clearByte =c1.doFinal (input );
         if  (debug )
        {
             System.out.println ("解密後的二進串:"+byte2hex (clearByte ));
             System.out.println ("解密後的字元串:"+(new  String (clearByte )));
             
        } return  clearByte ;
         
    } /**
     * 位元組碼轉換成16進制字元串
     * @param byte[] b 輸入要轉換的位元組碼
     * @return String 返回轉換後的16進制字元串
     */
     public  static  String  byte2hex (byte [] b ) 
    {
         String  hs ="";
         String  stmp ="";
         for  (int  n =0 ;n <b.length ;n ++)
        {
             stmp =(java.lang.Integer.toHexString (b [n ] &  0XFF ));
             if  (stmp.length ()==1 ) hs =hs +"0"+stmp ;
             else  hs =hs +stmp ;
             if  (n <b.length -1 ) hs =hs +":";
             
        } return  hs.toUpperCase ();
         
    } 
     
     /**
      * 字元串轉成位元組數組.
      * @param hex 要轉化的字元串.
      * @return byte[] 返回轉化後的字元串.
      */
     public static byte[] hexStringToByte(String hex) {
       int len = (hex.length() / 2);
       byte[] result = new byte[len];
       char[] achar = hex.toCharArray();
       for (int i = 0; i < len; i++) {
        int pos = i * 2;
        result[i] = (byte) (toByte(achar[pos]) << 4 | toByte(achar[pos + 1]));
       }
       return result;
      }
     private static byte toByte(char c) {
       byte b = (byte) "0123456789ABCDEF".indexOf(c);
       return b;
      }
     
     /**
      * 位元組數組轉成字元串.
      * @param String 要轉化的字元串.
      * @return 返回轉化後的位元組數組.
      */
     public static final String bytesToHexString(byte[] bArray) {
       StringBuffer sb = new StringBuffer(bArray.length);
       String sTemp;
       for (int i = 0; i < bArray.length; i++) {
        sTemp = Integer.toHexString(0xFF & bArray[i]);
        if (sTemp.length() < 2)
         sb.append(0);
        sb.append(sTemp.toUpperCase());
       }
       return sb.toString();
      }
     
     /**
      * 從資料庫中獲取密鑰.
      * @param deptid 企業id.
      * @return 要返回的位元組數組.
      * @throws Exception 可能拋出的異常.
      */
     public static byte[] getSecretKey(long deptid) throws Exception {
   byte[] key=null;
   String value=null;
   //CommDao =new CommDao();
  // List list=.getRecordList("from Key k where k.deptid="+deptid);
   //if(list.size()>0){
    //value=((com.csc.sale.bean.Key)list.get(0)).getKey();
    value = "CB7A92E3D3491964";
    key=hexStringToByte(value);
   //}
   if (debug)
    System.out.println("密鑰:" + value);
   return key;
  }
     
     public String encryptData2(String data) { 
   String en = null;
   try {
    byte[] key=hexStringToByte(this.key);
    en = bytesToHexString(encryptData(data.getBytes(),key));
   } catch (Exception e) {
    e.printStackTrace();
   }
   return en;
  }
     
     public String decryptData2(String data) { 
    String de = null;
    try {
     byte[] key=hexStringToByte(this.key);
     de = new String(decryptData(hexStringToByte(data),key));
    } catch (Exception e) {
     e.printStackTrace();
    }
    return de;
   }
} 加密使用:       byte[] key=Eryptogram.getSecretKey(deptid);    //獲得鑰匙(位元組數組)
       byte[] tmp=Eryptogram.encryptData(password.getBytes(), key);  //傳入密碼和鑰匙,獲得加密後的位元組數組的密碼
       password=Eryptogram.bytesToHexString(tmp);  //將位元組數組轉化為字元串,獲得加密後的字元串密碼解密與之差不多
Ⅱ 用java實現對資料庫文件的加密
自己編寫一個加密演算法,或者在網上找一個MD5的加密演算法,把密碼加密後再存入資料庫,取的時候解密下就可以了
Ⅲ java web 項目關於資料庫加密問題!請高手解答
這個有幾個思路:
一個是本身項目文件應該有訪問許可權限制,生產環境的系統不應讓開發人員可以察看,開發環境和生產環境應分開。
如果不能分開,還有個方法是用J2EE伺服器容器提供資料庫Datasource,應用程序直接從web容器獲取,不需要提供用戶名密碼。
還有一個方法,配置資料庫伺服器限制用戶只能從Web容器IP連接,這樣甚至可以不需要密碼。
Ⅳ Java中怎麼把密碼加密!
MD5很簡單,有專門的類,自己定義一個加密用的saltKey。
還有自己寫簡單的加密解密可以用異或演算法,一個字元串於某字元異或就加密了,再與這個字元異或又解密了。很簡單的演算法。不過比較容易破解
Ⅳ java 對資料庫properties文件加密
可以通過其它方法來實現:
1:如果沒用框架,直接加密、解密即可
2:如果用hibernate之類,可以繞過Configuration,讀取Hibernate配置文件解密後再連接資料庫
3:考慮集群影響
Ⅵ 如何用java對數據加密,生成的密文是唯一的
用戶提供的是明文,資料庫裡面存儲的是密文
不管怎麼樣,加密也好,解密也好,如果要比較相等性,這兩個過程肯定要有一個,這個是沒有選擇的,需要提高性能的話只能做兩點:
1、將用戶的明文加密為密文後再與資料庫中的比較,原因是這樣只加密一次就可以,如果解密的話就要把資料庫的密文全部解密,這是不現實的
2、在密文所在的列上建立索引,增加搜索速度,這個速度增長是很顯著的,雖然會失去一些插入性能。
3、將對應的sql寫成存儲過程。省去預編譯的時間。這個速度的提高也是很明顯的。
至於你說的「怎麼能保證不一樣得明文加密後生成不一樣得密文」
MD5就可以
MD5有兩個特性:
1、任意兩段明文數據,加密以後的密文不會是相同的
2、任意一段明文數據,經過加密以後,其結果永遠是不變的
網上MD5加密的類應該有寫好的
大致上方法就是這樣了,都做到的話應該沒有問題了,不會影響你的性能的
Ⅶ java語言實現密碼加密
一般只有加密碼過程,沒有解密。
用戶登陸時,把他輸入的密碼經過加密
再拿去與資料庫裡面的密碼比較就可以了。
修改密碼也是一樣的原理,輸入的原密碼加密後與資料庫密碼比較,符合的話再將新密碼加密後存入資料庫覆蓋原密碼
現在流行的MD5加密演算法 網上有很多JAVA的MD5演算法
Ⅷ 如何利用JAVA對文檔進行加密和解密處理,完整的java類
我以前上密碼學課寫過一個DES加解密的程序,是自己實現的,不是通過調用java庫函數,代碼有點長,帶有用戶界面。需要的話聯系我
Ⅸ Java寫一個加密文件或者文件夾的軟體
這個用Java和C#來做估計不太合適,我只能給你提供思路,思路一,HookAPI的CreateProcess和ShellExecute這類打開文件的API函數,然後獲得
打開的文件路徑,然後判定這個文件是否在你的加密資料庫中,如果是加密文件,則彈出密碼框要求輸入密碼才能進入,這個程序需要做成一個常住
後台運行的。思路二寫驅動,這樣可以控制的很好。思路三,偽加密,這個貌似以前多數的加密軟體都是此類模式,就是使用一些系統的屬性將文件
移動到其他位置或者修改屬性進行DOS模式類的隱藏,然後處理的。
Ⅹ java連接加密的sqllite資料庫你怎麼解決的
通過Java本身提供的JDBC連結
需要導入sqlitejdbc-v033-nested.jar文件
private static String url="org.sqlite.JDBC";
 private static String dri="jdbc:sqlite:/D:test.db文件對應的目錄路徑(不能包含中文)";
 
 public static Connection getConn(String table) throws Exception{
  
  Class.forName(url);
  Connection conn = DriverManager
    .getConnection(dri+table);
  return conn;
 }
