package com.miniportal.util; import java.io.UnsupportedEncodingException; 
import java.security.spec.AlgorithmParameterSpec; 
import java.security.spec.KeySpec; import javax.crypto.Cipher; 
import javax.crypto.IllegalBlockSizeException; 
import javax.crypto.SecretKey; 
import javax.crypto.SecretKeyFactory; 
import javax.crypto.spec.PBEKeySpec; 
import javax.crypto.spec.PBEParameterSpec; public class DesEncrypter { private static Cipher ecipher; 
private static Cipher dcipher; private static byte[] salt = { 
        (byte)0xA9, (byte)0x9B, (byte)0xC8, (byte)0x32, 
        (byte)0x56, (byte)0x35, (byte)0xE3, (byte)0x03 
    };     // Iteration count 
    private static int iterationCount = 24;     private static void initEcipher(String key) { 
try { 
// Create the key 
KeySpec keySpec = new PBEKeySpec(key.toCharArray(), salt, 
iterationCount); 
SecretKey secKey = SecretKeyFactory.getInstance("PBEWithMD5AndDES") 
.generateSecret(keySpec); 
ecipher = Cipher.getInstance(secKey.getAlgorithm()); // Prepare the parameter to the ciphers 
AlgorithmParameterSpec paramSpec = new PBEParameterSpec(salt, 
iterationCount); ecipher.init(Cipher.ENCRYPT_MODE, secKey, paramSpec); 
} catch (java.security.InvalidAlgorithmParameterException e) { 
} catch (java.security.spec.InvalidKeySpecException e) { 
} catch (javax.crypto.NoSuchPaddingException e) { 
} catch (java.security.NoSuchAlgorithmException e) { 
} catch (java.security.InvalidKeyException e) { 


        private static void initDcipher(String key){ 
    try { 
// Create the key 
KeySpec keySpec = new PBEKeySpec(key.toCharArray(), salt, 
iterationCount); 
SecretKey secKey = SecretKeyFactory.getInstance("PBEWithMD5AndDES") 
.generateSecret(keySpec); 
dcipher = Cipher.getInstance(secKey.getAlgorithm()); // Prepare the parameter to the ciphers 
AlgorithmParameterSpec paramSpec = new PBEParameterSpec(salt, 
iterationCount); dcipher.init(Cipher.DECRYPT_MODE, secKey, paramSpec); 
} catch (java.security.InvalidAlgorithmParameterException e) { 
} catch (java.security.spec.InvalidKeySpecException e) { 
} catch (javax.crypto.NoSuchPaddingException e) { 
} catch (java.security.NoSuchAlgorithmException e) { 
} catch (java.security.InvalidKeyException e) { 

    } 
    
    /** 
    * DES加密 
    */ 
    public static String encrypt(String data,String key) { 
        try { 
        initEcipher(key); 
            // Encode the string into bytes using utf-8 
            byte[] utf8 = data.getBytes("UTF8");             // Encrypt 
            byte[] enc = ecipher.doFinal(utf8);             // Encode bytes to base64 to get a string 
            return new sun.misc.BASE64Encoder().encode(enc); 
        } catch (javax.crypto.BadPaddingException e) { 
        } catch (IllegalBlockSizeException e) { 
        } catch (UnsupportedEncodingException e) { 
        } 
        return null; 
    }     /** 
    * DES解密 
    */ 
    public static String decrypt(String data, String key) { 
        try { 
        initDcipher(key); 
        
            // Decode base64 to get bytes 
            byte[] dec = new sun.misc.BASE64Decoder().decodeBuffer(data);             // Decrypt 
            byte[] utf8 = dcipher.doFinal(dec);             // Decode using utf-8 
            return new String(utf8, "UTF8"); 
        } catch (javax.crypto.BadPaddingException e) { 
        } catch (IllegalBlockSizeException e) { 
        } catch (UnsupportedEncodingException e) { 
        } catch (java.io.IOException e) { 
        } 
        return null; 
    } 
    
    public static void main(String[] args) { 
String key = "bjTGHXtyCDxFleqSbQ"; 
try { 
// Encrypt 
String encrypted = DesEncrypter.encrypt("123456", key); 
System.out.println(encrypted); 
System.out.println("=========BEGIN============"); 
// Decrypt 
String decrypted = DesEncrypter.decrypt(encrypted, key); 
System.out.println(decrypted); 
System.out.println("==========END============"); 
} catch (Exception e) { 
e.printStackTrace(); 


}