-
工具类Md5UUIDSaltUtil.java
import org.apache.commons.codec.digest.DigestUtils;
import java.util.UUID;
public class Md5UUIDSaltUtil {
public static String uuid = UUID.randomUUID().toString().replace("-", "");
//创建md5对象
public static String createMd5Code(String code) {
return DigestUtils.md5Hex(code);
}
//进行密码校验
public static boolean checkPassword(String userCode, String dbCode) {
if (dbCode.equals(createMd5Code(userCode))) {
return true;
} else {
return false;
}
}
public static String getUUID() {
return uuid;
}
public static String getSalt() {
String salt = uuid.substring(0, 5);
return salt;
}
}
-
用户注册时的密码加密
@Override
//添加
public void add(User user) {
String id = UUID.randomUUID().toString().replace("-","");
user.setId(id);
user.setCreateDate(new Date());
user.setLastUpdateDate(new Date());
//加盐,并将加过盐的密码 和盐重新存入数据库中
String salt = Md5UUIDSaltUtil.getSalt();
String password = Md5UUIDSaltUtil.createMd5Code(user.getPassword()+salt);
user.setPassword(password);
user.setSalt(salt);
userDAO.insert(user);
}
-
用户登录时的密码校验
//根据账号密码查询
public void myTest(){
String message = null;
String password = "123456";
// 先根据用户名获得这个用户信息,包括密码
// 然后将用户输入的密码重新按原来的加密方式加密之后与数据库中查出来的密码进行比对
Map<String, Object> map = new HashMap<>();
map.put("username","小黑");
List<User> users = userService.selectByMap(map);
if(users != null || users.size() != 0){
User user = users.get(0);
//获取该用户的盐
String salt = user.getSalt();
//将用户输入的密码加上盐 转换为密文
String md5Code = Md5UUIDSaltUtil.createMd5Code(password+salt);
//判断该密码是否与数据库中的密码一致
if(user.getPassword().equals(md5Code)){
message = "登录成功";
}else{
message = "密码不正确";
}
}
System.out.println(message);
}