DES的加密和解密


import java.security.*;
import javax.crypto.*;
import sun.misc.*;


/**
* DES可对byte[],String类型进行加密与解密 密文可使用String,byte[]存储
* @author 晏风
*
*/
public class DesEncryptionAndDecryption {
Key key;
public DesEncryptionAndDecryption()
{
setKey("daliantan0v0");
}
     /**   
     * 根据参数生成KEY        
     * @param strKey:密文规则   
     */    
    public void setKey(String strKey) {     
        try {     
            KeyGenerator _generator = KeyGenerator.getInstance("DES");     
            _generator.init(new SecureRandom(strKey.getBytes()));     
            this.key = (Key) _generator.generateKey();   
            _generator = null;     
        } catch (Exception e) {     
            e.printStackTrace();     
        }     
    }     
    /**   
     * 加密 以String明文输入,String密文输出        
     * @param strMing:要加密的字符串明文   
     * @return:加密后的字符串密文  
     */
    public String getEncryption(String strMing) {     
        byte[] byteMi = null;     
        byte[] byteMing = null;     
        String strMi = "";     
        BASE64Encoder base64en = new BASE64Encoder();     
        try {     
            byteMing = strMing.getBytes("UTF8");     
            byteMi = this.getEncryption(byteMing);     
            strMi = base64en.encode(byteMi);     
        } catch (Exception e) {     
            e.printStackTrace();     
        } finally {     
            base64en = null;     
            byteMing = null;     
            byteMi = null;     
        }     
        return strMi;     
    }     
    
    /**   
     * 解密 以String密文输入,String明文输出       
     * @param strMi:要解密的字符串密文   
     * @return:解密后的字符串明文     
     */    
    public String getDecryption(String strMi) {     
        BASE64Decoder base64De = new BASE64Decoder();     
        byte[] byteMing = null;     
        byte[] byteMi = null;     
        String strMing = "";     
        try {     
            byteMi = base64De.decodeBuffer(strMi);     
            byteMing = this.getDecryption(byteMi);     
            strMing = new String(byteMing, "UTF8");     
        } catch (Exception e) {     
            e.printStackTrace();     
        } finally {     
            base64De = null;     
            byteMing = null;     
            byteMi = null;     
        }     
        return strMing;     
    }     
    
    /**   
     * 加密 以byte[]明文输入,byte[]密文输出       
     * @param byteS:要加密的byte[]明文   
     * @return:加密后的byte[]密文   
     */    
    public byte[] getEncryption(byte[] byteS) {     
        byte[] byteFina = null;     
        Cipher cipher;     
        try {     
            cipher = Cipher.getInstance("DES");     
            cipher.init(Cipher.ENCRYPT_MODE, (java.security.Key) key);     
            byteFina = cipher.doFinal(byteS);     
        } catch (Exception e) {     
            e.printStackTrace();     
        } finally {     
            cipher = null;     
        }     
        return byteFina;     
    }     
    
    /**   
     * 解密以byte[]密文输入,以byte[]明文输出        
     * @param byteD:要加密的byte[]密文   
     * @return:解密后的byte[]明文   
     */    
    public byte[] getDecryption(byte[] byteD) {     
        Cipher cipher;     
        byte[] byteFina = null;     
        try {     
            cipher = Cipher.getInstance("DES");     
            cipher.init(Cipher.DECRYPT_MODE, (java.security.Key) key);     
            byteFina = cipher.doFinal(byteD);     
        } catch (Exception e) {     
            e.printStackTrace();     
        } finally {     
            cipher = null;     
        }     
        return byteFina;     
    
    }     
    

}

你可能感兴趣的:(Security,sun)