MD5(Message Digest Algorithm 5)是一种常用的哈希算法,用于将数据转换为固定长度的散列值。MD5算法将任意长度的数据作为输入,并生成一个128位(16字节)的散列值作为输出。
@Component
public class MD5Utils {
private static EncryptProperties encryptProperties;
@Autowired
public MD5Utils(EncryptProperties encryptProperties) {
MD5Utils.encryptProperties = encryptProperties;
}
//origin 原始字符串
@Deprecated
public static String getEncryptPasswordNoSalt(String origin) {
String resultString = null;
try {
resultString = origin;
MessageDigest md = MessageDigest.getInstance("MD5");
//byteArrayToHexString方法拼接字符串
resultString = byteArrayToHexString(md.digest(resultString.getBytes())); //digest方法把String转化成byte数组
} catch (Exception e) {
e.printStackTrace();
}
return resultString;
}
public static String byteArrayToHexString(byte[] b) {
StringBuilder resultSb = new StringBuilder();
for (byte aB : b) {
resultSb.append(byteToHexString(aB));
}
return resultSb.toString();
}
//字节转化成16进制
private static String byteToHexString(byte b) {
int n = b;
if (n < 0) {
n = 256 + n;
}
int d1 = n / 16;
int d2 = n % 16;
return hexDigits[d1] + hexDigits[d2];
}
private final static String[] hexDigits = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d",
"e", "f" };
}