import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
/**
* Java常用的对密码加密的方法 对摘要信息进行加密编码
*/
public class PasswordUtil {
private final static String[] hexDigits = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d",
"e", "f" };
/**
* 将字节数组转换为16进制的字符串
*
* @param byteArray
* 字节数组
* @return 16进制的字符串
*/
private static String byteArrayToHexString(byte[] byteArray) {
StringBuffer sb = new StringBuffer();
for (byte byt : byteArray) {
sb.append(byteToHexString(byt));
}
return sb.toString();
}
/**
* 将字节转换为16进制字符串
*
* @param byt
* 字节
* @return 16进制字符串
*/
private static String byteToHexString(byte byt) {
int n = byt;
if (n < 0)
n = 256 + n;
return hexDigits[n / 16] + hexDigits[n % 16];
}
/**
* 将摘要信息转换为相应的编码
*
* @param code
* 编码类型
* @param message
* 摘要信息
* @return 相应的编码字符串
*/
private static String encode(String code, String message) {
MessageDigest md;
String encode = null;
try {
md = MessageDigest.getInstance(code);
encode = byteArrayToHexString(md.digest(message.getBytes()));
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
return encode;
}
/**
* 将摘要信息转换成MD5编码
*
* @param message
* 摘要信息
* @return MD5编码之后的字符串
*/
public static String md5Encode(String message) {
return encode("MD5", message);
}
/**
* 将摘要信息转换成SHA编码
*
* @param message
* 摘要信息
* @return SHA编码之后的字符串
*/
public static String shaEncode(String message) {
return encode("SHA", message);
}
/**
* 将摘要信息转换成SHA-256编码
*
* @param message
* 摘要信息
* @return SHA-256编码之后的字符串
*/
public static String sha256Encode(String message) {
return encode("SHA-256", message);
}
/**
* 将摘要信息转换成SHA-512编码
*
* @param message
* 摘要信息
* @return SHA-512编码之后的字符串
*/
public static String sha512Encode(String message) {
return encode("SHA-512", message);
}
@SuppressWarnings("unused")
private String validate(String code, String tag) {
if (code.equals(tag))
return "通过验证";
return "未通过验证";
}
}