import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
/**
* 加密工具类
* Created by Administrator on 2015/10/21 0021.
*/
public class EncryptUtils {
/**
* 字符串加密使用MD5算法
*/
public final static String encryptMD5(String source) {
if (source == null) {
source = "";
}
String result = "";
try {
result = encrypt(source, "MD5");
} catch (NoSuchAlgorithmException ex) {
// 一般不会发生
throw new RuntimeException(ex);
}
return result.toLowerCase();
}
/**
* 字符串加密使用SHA算法
*/
public final static String encryptSHA(String source) {
if (source == null) {
source = "";
}
String result = "";
try {
result = encrypt(source, "SHA");
} catch (NoSuchAlgorithmException ex) {
// 一般不会发生
throw new RuntimeException(ex);
}
return result;
}
/**
* 字符串加密
*/
private final static String encrypt(String source, String algorithm)
throws NoSuchAlgorithmException {
byte[] resByteArray = encrypt(source.getBytes(), algorithm);
return toHexString(resByteArray);
}
/**
* 字节数组加密
*/
private final static byte[] encrypt(byte[] source, String algorithm)
throws NoSuchAlgorithmException {
MessageDigest md = MessageDigest.getInstance(algorithm);
md.reset();
md.update(source);
return md.digest();
}
/**
* 从字节数组获取十六进制字符串
*/
private final static String toHexString(byte[] res) {
StringBuffer sb = new StringBuffer(res.length << 1);
for (int i = 0; i < res.length; i++) {
String digit = Integer.toHexString(0xFF & res[i]);
if (digit.length() == 1) {
digit = '0' + digit;
}
sb.append(digit);
}
return sb.toString().toUpperCase();
}
}