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);
}