MD5常用于密码加密,例如,在注册时可以将密码转为MD5再放入数据库,在登录时校验登录密码和数据库存放的加密密码是否一致
Java自带的加密类MessageDigest
package com.ycj.utils;
import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
//MD5 生成器
public class MD5Utils {
public static String md5(String password){
//生成一个md5加密器
try {
MessageDigest md = MessageDigest.getInstance("MD5");
//计算MD5 的值
md.update(password.getBytes());
//BigInteger 将8位的字符串 转成16位的字符串 得到的字符串形式是哈希码值
//BigInteger(参数1,参数2) 参数1 是 1为正数 0为零 -1为负数
return new BigInteger(1, md.digest()).toString(16);
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
return null;
}
}
因为MD5算法是不可逆的,所以登录验证时只能把用户登录密码同样转为MD5形式再和数据库的密码进行比较,示例如下:
//调用MD5工具类方法生成加密字符串
String md5Pwd = MD5Utils.md5(password);
if(user.getPassword().equals(md5Pwd)){
//业务实现
}
password为要加密的字符串,直接调用工具类方法就可以生成加密字符串