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); }
加解密-MD5 / Base64 / DES / AES
猜你喜欢
转载自even-ing.iteye.com/blog/2287700
今日推荐
周排行