里面封装了32位、16位大小写加密方式,应有尽有,快来看看吧
长度固定,
不管多长的字符串,加密后的长度都是一样长的,
作用:方便平时信息的统计和管理易计算
字符串和加密的过程是简单的
作用:开发者很容易理解和做出加密工具细微性
一个文件,不管多大,你只要改变里面的一个值,MD5的值就会导致改变
作用:很多软件和应用在网站提供下载资源,都会有md5值的判定,用户下载后只需要用工具类测试一下,通过对比md5值,就能知道文件有没有发生变化。不可逆性
你明明知道明文和加密方式,却无法计算出原密码
作用:基于这个特点,就是打打加强了数据的安全性
package utils;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class MD5Utils {
/**
*
* @Description: 32位小写MD5
*/
public static String parseStrToMd5L32(String str){
String reStr = null;
try {
MessageDigest md5 = MessageDigest.getInstance("MD5");
byte[] bytes = md5.digest(str.getBytes());
StringBuffer stringBuffer = new StringBuffer();
for (byte b : bytes){
int bt = b&0xff;
if (bt < 16){
stringBuffer.append(0);
}
stringBuffer.append(Integer.toHexString(bt));
}
reStr = stringBuffer.toString();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
return reStr;
}
/**
* @param str
* @Description: 32位大写MD5
*/
public static String parseStrToMd5U32(String str){
String reStr = parseStrToMd5L32(str);
if (reStr != null){
reStr = reStr.toUpperCase();
}
return reStr;
}
/**
* @param str
* @Description: 16位小写MD5
*/
public static String parseStrToMd5U16(String str){
String reStr = parseStrToMd5L32(str);
if (reStr != null){
reStr = reStr.toUpperCase().substring(8, 24);
}
return reStr;
}
/**
* @param str
* @Description: 16位大写MD5
*/
public static String parseStrToMd5L16(String str){
String reStr = parseStrToMd5L32(str);
if (reStr != null){
reStr = reStr.substring(8, 24);
}
return reStr;
}
}