package me.falcon.utils;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class MD5Utils {
//用MD5算法对密码进行加密处理, 加密后是一个32位的十六进制的字符串
public static String md5(String password){
MessageDigest digest;
try {
digest = MessageDigest.getInstance("MD5");
byte[] bytes = digest.digest(password.getBytes()); //采用MD5对用户名进行Hash
password = toHexString(bytes, ""); //将计算结果转化成字符串
return password;
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
throw new RuntimeException(e);
}
}
private static String toHexString(byte[] bytes, String separator) {
StringBuilder hexString = new StringBuilder();
for (byte b : bytes) {
//取低8位. 因为b有可能是负的, 如果是负的,则首位是1, 扩展成int(32位)后, 就不是补0了而是补1, 不与0xFF做&运算就无法取到低8位
String hex = Integer.toHexString(0xFF & b);
// System.out.println(b + "-----------------" + hex);
if(hex.length() == 1){
hexString.append('0');
}
hexString.append(hex).append(separator);
}
// System.out.println();
return hexString.toString();
}
}