加解密-MD5 / Base64 / DES / AES

public class MD5CoderUtil {
    
    private static Log log = LogFactory.getLog(MD5CoderUtil.class);
    public static final String KEY_MD5 = "MD5";
    
     /** 
     * MD5加密 
     *  
     * @param data 
     * @return 
     * @throws Exception 
     */  
    public static String encryptMD5(String message){  
        try {
            byte[] data = message.getBytes();
            MessageDigest md5 = MessageDigest.getInstance(KEY_MD5);  
            md5.update(data);  
            byte[] bytes = md5.digest();
            return DigitTransfer.parseByte2HexStr(bytes);
        } catch (NoSuchAlgorithmException e) {
            log.error("encrypt MD5 error , message : " + message,  e);
            return null;  
        }
    }
    
    public static void main(String[] args) throws Exception {
        String s = "2a387154-ee11-4032-85ae-85c5e4e1cc80";
        System.out.println(encryptMD5(s));
        System.out.println(encryptMD5(s));
    }
}

public class Base64CoderUtil {
       
    /** 
     * BASE64解密 
     *  
     * @param key 
     * @return 
     * @throws Exception 
     */  
    public static String decryptBASE64(String key) throws Exception {
        byte[] datas = (new BASE64Decoder()).decodeBuffer(key);
        return new String(datas);  
    }  
  
    /** 
     * BASE64加密 
     *  
     * @param key 
     * @return 
     * @throws Exception 
     */  
    public static String encryptBASE64(String message) throws Exception {
        byte[] key = message.getBytes();
        return (new BASE64Encoder()).encodeBuffer(key);  
    }  
    
    public static void main(String[] args) throws Exception {
        String s = "2a387154-ee11-4032-85ae-85c5e4e1cc80";
        String r = encryptBASE64(s);
        System.out.println(r);
        System.out.println(decryptBASE64(r));
    }
} 

 public class DESCoderUtil {
    
    private static Log log = LogFactory.getLog(DESCoderUtil.class);
    private static final String DES = "DES";
    /** 
     * DES 转换密钥 
     *  
     * @param key 
     * @return 
     * @throws Exception 
     */  
    private static Key toKey(byte[] key) {  
        try {
            DESKeySpec dks = new DESKeySpec(key);  
            SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(DES);  
            SecretKey secretKey = keyFactory.generateSecret(dks);  
            return secretKey;
        } catch (Exception e) {
            log.error("tansfer key error", e);
            return null;
        }  
    }  
    
    /** 
     * DES 加密 
     *  
     * @param data 
     * @param key 
     * @return 
     * @throws Exception 
     */  
    public static String encryptDES(String message, String key) {  
        try {
            Key k = toKey(decryptBASE64(key));  
            Cipher cipher = Cipher.getInstance(DES);  
            cipher.init(Cipher.ENCRYPT_MODE, k);  
            byte[] inputData = message.getBytes();
            byte[] bytes =  cipher.doFinal(inputData);
            return encryptBASE64(bytes);
        } catch (Exception e) {
            log.error("encrypt DES error , message : " + message, e);
            return null;
        }  
    }  
  
    /** 
     * DES 解密 
     *  
     * @param data 
     * @param key 
     * @return 
     * @throws Exception 
     */  
    public static String decryptDES(String message, String key){  
        try {
            byte[] data = decryptBASE64(message);
            Key k = toKey(decryptBASE64(key));  
            Cipher cipher = Cipher.getInstance(DES);  
            cipher.init(Cipher.DECRYPT_MODE, k);  
            byte[] bytes = cipher.doFinal(data);
            return new String(bytes);
        } catch (Exception e) {
            log.error("decrypt DES error , message : " + message, e);
            return null;
        }  
    }  
  
   
    /** 
     * DES 生成密钥 
     *  
     * @param seed 
     * @return 
     * @throws Exception 
     */  
    private static String initKey(String seed) {  
        try {
            SecureRandom secureRandom = null;  
            if (seed != null) {  
                secureRandom = new SecureRandom(decryptBASE64(seed));  
            } else {  
                secureRandom = new SecureRandom();  
            }  
            KeyGenerator kg = KeyGenerator.getInstance(DES);  
            kg.init(secureRandom);  
            SecretKey secretKey = kg.generateKey();  
            return encryptBASE64(secretKey.getEncoded());
        } catch (Exception e) {
            log.error("init Key error", e);
            return null;
        }  
    }  
    
    private static byte[] decryptBASE64(String key) throws Exception {  
        return (new BASE64Decoder()).decodeBuffer(key); 
    }  
  
    private static String encryptBASE64(byte[] key) throws Exception {  
        return (new BASE64Encoder()).encodeBuffer(key);  
    }
    
    public static void main(String[] args) throws Exception {
            String inputStr = "2a387154-ee11-4032-85ae-85c5e4e1cc80";  
            //加密后的秘钥   
        String key = initKey("LIPS-sessionid"); 
        System.out.println("秘钥 :\t" + key);
        String r = encryptDES(inputStr, key);
        System.out.println("加密后:\t" + r);
        String outputData = decryptDES(r, key);  
        System.out.println("解密后:\t" + outputData);
    }
}

public class AESCoderUtil {
    
    private static Log log = LogFactory.getLog(DESCoderUtil.class);
    private static final String AES = "AES";
    /**
     * AES 加密
     * 
     * @param message
     * @param keyStr
     * @return
     */
    public static String  encryptAES(String message, String keyStr) {  
        try {             
           SecretKeySpec key = toKey(keyStr);  
           Cipher cipher = Cipher.getInstance(AES);// 创建密码器   
           cipher.init(Cipher.ENCRYPT_MODE, key);// 初始化   
           byte[] bytemessage = message.getBytes("utf-8");  
           byte[] result = cipher.doFinal(bytemessage);   // 加密  
           return encryptBASE64(result);  
        } catch (Exception e) {  
           log.error("encrpt AES error , message : " + message, e);  
           return null;  
        }  
    }
    
    public static String  encrypt4LongAES(Long message, String keyStr) {
        if(message != null){
            String str = message.toString();
            return encryptAES(str, keyStr);
        }else {
            log.error("message is null !");
            return null;
        }
    }
    
    public static Long decrypt4LongAES(String message, String keyStr) {
        String result = decryptAES(message, keyStr);
        return Long.parseLong(result);
    }
    
    /**
     * AES 解密
     * 
     * @param message
     * @param keyStr
     * @return
     */
    public static String decryptAES(String message, String keyStr) {  
        try {
            SecretKeySpec key = toKey(keyStr);              
            Cipher cipher = Cipher.getInstance(AES);// 创建密码器   
            cipher.init(Cipher.DECRYPT_MODE, key);// 初始化   
            byte[] messages = decryptBASE64(message);
            byte[] result = cipher.doFinal(messages);  // 解密  
            return new String(result);   
        } catch (Exception e) {  
            log.error("decrpt AES error , message : " + message, e);  
            return null;  
        }  
    }
    /**
     * 转换秘钥
     * 
     * @param keyStr
     * @return
     */
    private static SecretKeySpec toKey(String keyStr) {
        KeyGenerator kgen;
        try {
            kgen = KeyGenerator.getInstance(AES);
            kgen.init(128, new SecureRandom(decryptBASE64(keyStr)));  
            SecretKey secretKey = kgen.generateKey();  
            byte[] enCodeFormat = secretKey.getEncoded();  
            SecretKeySpec key = new SecretKeySpec(enCodeFormat, AES);
            return key;
        } catch (Exception e) {
            log.error("transfer Key error , key : " + keyStr, e);  
               return null; 
        }
    }
    
    private static byte[] decryptBASE64(String key) throws Exception {  
        return (new BASE64Decoder()).decodeBuffer(key); 
    }  
  
    private static String encryptBASE64(byte[] key) throws Exception {  
        return (new BASE64Encoder()).encodeBuffer(key);  
    }
    
    private static String initKey(String key) throws Exception {
        String secretKey = encryptBASE64(key.getBytes());
        return secretKey;
    }
    
    public static void main(String[] args) throws Exception {
        String s = "2a387154-ee11-4032-85ae-85c5e4e1cc80";
        String key = "LIPS-sessionid";
        //加密后的秘钥   
        String keyTemp = initKey(key);
        System.out.println("秘钥:\t" + keyTemp);
        //加密
        String r = encryptAES(s, keyTemp);
        System.out.println("加密后:\t" + r);
        //解密
        String result = decryptAES(r, keyTemp);
        System.out.println("解密后:\t" + result);
        
        //加密
        Long l = 43333555L;
        String r2 = encrypt4LongAES(l, keyTemp);
        System.out.println("加密后:\t" + r2);
        //解密
        Long result2 = decrypt4LongAES(r2, keyTemp);
        System.out.println("解密后:\t" + result2);
        
    }  

猜你喜欢

转载自even-ing.iteye.com/blog/2287700