MD5即Message-Digest Algorithm 5(信息-摘要算法5):
方法一:
添加jar包:${SPRING_HOME}/lib/jakarta-commons/commons-codec.jar
import org.apache.commons.codec.digest.DigestUtils;
public class MD5Util {
// 返回md5加密后的字符串
public static String md5(String message) {
String md5Digest = DigestUtils.md5Hex(message);
return md5Digest;
}
}
方法二:
// JDK自带的
import java.security.MessageDigest;
// 也是JDK自带的,可以在OpenJDK中查看其源码
import sun.misc.BASE64Encoder;
public class MD5Util {
// 返回md5加密后的字符串
public static String md5(String message) {
try {
MessageDigest md = MessageDigest.getInstance("MD5");
byte[] md5Bytes = md.digest();
// 采用Base64编码把字节序列转换为明文
BASE64Encoder base64Encoder = new BASE64Encoder();
return base64Encoder.encode(md5Bytes);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}
补充:Base64编码
编码原理:将3个字节转换成4个字节((3X8)=24=(4X6))
先读入3个字节,每读一个字节,左移8位,再右移四次,每次6位,这样就有4个字节了。
解码原理: 将4个字节转换成3个字节
先读入4个6位(用或运算),每次左移6位,再右移3次,每次8位,这样就还原了。
说明:
1,Base64编码可用于在HTTP环境下传递较长的标识信息
2,Base64编码后的标识信息长度为24
3, 3个字节转成4个字节后,每一个字节表示的最小和最大数分别是:00000000 ~ 00111111
0~63共64个整数,所以称之为Base64,它其实是一个码表,每个数字对应一个可见字符