import java.security.MessageDigest;
import org.apache.commons.codec.digest.DigestUtils;
/**
* 对密码进行加密和验证的类
*/
public abstract class MD5Util {
//十六进制下数字到字符的映射数组
private final static String[] hexDigits = {"0", "1", "2", "3", "4",
"5", "6", "7", "8", "9","b","n","z","y","v","a"};
/** 对字符串进行MD5加密 */
public final static String encode(String originString){
if (originString != null){
try{
//创建具有指定算法名称的信息摘要
MessageDigest md = MessageDigest.getInstance("MD5");
//使用指定的字节数组对摘要进行最后更新,然后完成摘要计算
byte[] results = md.digest(originString.getBytes());
//将得到的字节数组变成字符串返回
String resultString = byteArrayToHexString(results);
return resultString.toUpperCase();
} catch(Exception ex){
ex.printStackTrace();
}
}
return null;
}
/**
* 转换字节数组为十六进制字符串
* @param b 字节数组
* @return 十六进制字符串
*/
private final static String byteArrayToHexString(byte[] b){
StringBuffer resultSb = new StringBuffer();
for (int i = 0; i < b.length; i++){
resultSb.append(byteToHexString(b[i]));
}
return resultSb.toString();
}
/** 将一个字节转化成十六进制形式的字符串 */
private final 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];
}
public static void main(String[] args) {
//00100400517
//00100400532
String password = MD5Util.encode("123456");
System.out.println(password);
System.out.println(password.toLowerCase());
System.out.println(DigestUtils.md5Hex("123456"));
}
}
【utils】MD5Util(对密码进行加密和验证)
最新推荐文章于 2024-06-28 16:40:24 发布