package message.utils;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
import java.io.IOException;
import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
/**
* 加密工具类.
*
* @author sunhao(sunhao.java@gmail.com)
* @version V1.0
* @createTime 2015-1-6 20:57
*/
public class EncryptUtils {
/**
* 用MD5算法进行加密
*
* @param plainText 明文,需要加密的字符串
* @return MD5加密后的结果
*/
public static String encodeMD5(String plainText) {
return encode(plainText, EncryptType.MD5);
}
/**
* 用SHA算法进行加密
*
* @param plainText 明文,需要加密的字符串
* @return SHA加密后的结果
*/
public static String encodeSHA(String plainText) {
return encode(plainText, EncryptType.SHA);
}
/**
* 用base64算法进行加密
*
* @param plainText 明文,需要加密的字符串
* @return base64加密后的结果
*/
public static String encodeBase64(String plainText) {
BASE64Encoder encoder = new BASE64Encoder();
return encoder.encode(plainText.getBytes());
}
/**
* 用base64算法进行解密
*
* @param cipherText 密文,需要解密的字符串
* @return base64解密后的结果
* @throws IOException
*/
public static String decodeBase64(String cipherText) throws IOException {
BASE64Decoder encoder = new BASE64Decoder();
return new String(encoder.decodeBuffer(cipherText));
}
/**
* 根据类型加密
*
* @param plainText 明文
* @param encryptType 加密类型
* @return
*/
private static String encode(String plainText, EncryptType encryptType) {
String dstr = null;
try {
MessageDigest md = MessageDigest.getInstance(encryptType.name());
md.update(plainText.getBytes());
dstr = new BigInteger(1, md.digest()).toString(16);
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
return dstr;
}
/**
* 加密类型
*/
private enum EncryptType {
MD5, SHA
}
}