import javax.xml.bind.DatatypeConverter;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
加密:
public static String getMd5(String source) {
//MessageDigest 为应用程序提供信息摘要算法的功能
MessageDigest md = null;
try {
//返回实现指定摘要算法的 MessageDigest 对象
md = MessageDigest.getInstance("MD5");
} catch (NoSuchAlgorithmException e) {
throw new BsException(ErrorConstant.C000, ErrorConstant.M000, "md5生成失败");
}
//将传入的密码转为 byte数组 更新摘要
md.update(source.getBytes());
//在调用此方法之后,摘要被重置
byte[] digest = md.digest();
// printHexBinary:将一个byte[]数组编码成一个String类型
//将String类型的数据中的字母都转为大写
return DatatypeConverter.printHexBinary(digest).toUpperCase();
}
验证登录:
PS:和上面的方法与在一个工具类中
//source:前台传入的密码 md5:数据库中存储的密码
public static boolean md5Compare(String source, String md5) {
//断言类中的方法判断,即判断传入的密码不是null也不是“”
Assert.notBlock(source, ErrorConstant.C000, ErrorConstant.M000, "md5比较失败");
//将传入的密码使用上面的方法进行Md5加密
String sourceMd5 = getMd5(source);
//将加密后的密码与数据库中的进行判断
return sourceMd5.equals(md5);
}
本文介绍了如何使用Java实现MD5加密算法,并提供了一个用于验证登录的实用方法。通过MessageDigest类实现MD5摘要算法,将输入字符串转换为固定长度的摘要,用于密码的安全存储。同时,提供了一个md5Compare方法,用于比较用户输入的密码与数据库中存储的MD5加密密码,以完成用户登录验证。
4601

被折叠的 条评论
为什么被折叠?



