MD5加密实现注册和登录功能
作者:互联网
一、MD5接口知识
(串 + password + 串) ------ MD5算法进行加密,连续加载三次
(盐值 + password + 盐值) ------ 盐值就是一个随机字符串
1、获取盐值(随机生成一个盐值,保存到数据库)
String salt = UUID.randomUUID().toString().toUpperCase(); //toUpperCase() : 转为大写,可以选择不转为大写
2、将密码和盐值作为一个整体进行加密处理
String password = "123456";
for (int i = 0; i < 3; i++) {
//DigestUtils.md5DigestAsHex(byte[] bytes) ,将(盐值 + password + 盐值)转换为Byte数据
password = DigestUtils.md5DigestAsHex((salt + password + salt).getBytes()).toUpperCase();
}
二、封装MD5加密方法进行加密
三、使用MD进行用户注册功能
@Override
public R<String> save(Employee employee) {
//
Employee employeeIsNull = employeeMapper.login(employee);
if (employeeIsNull != null){
return R.error("用户已存在");
}
//随机生成一个盐值
String salt = UUID.randomUUID().toString().toUpperCase();
employee.setSalt(salt); //补全盐值
//初始密码加密
String md5Password = getMD5Password("123456", salt);
employee.setPassword(md5Password); //补全密码
employee.setStatus(1); //补全状态
employee.setCreateTime(LocalDateTime.now());//补全创建时间
employee.setUpdateTime(LocalDateTime.now()); //补全更新时间
//员工信息保存到数据库
Integer rows = employeeMapper.save(employee);
if (rows<1){
return R.error("创建员工发生错误");
}
return R.success("添加成功");
}
四、MD5解密,用户登录实现
@Override
public R<Employee> login(Employee employee) {
//根据Employee的username传递给Mapper进行数据库查询,判断用户是否存在
Employee result = employeeMapper.login(employee);
if (result == null){
return R.error("账号密码错误");
}
//1、获取用户传递过来的密码
String password = employee.getPassword();
//2、获取盐值
String salt = result.getSalt();
//3、进行MD5加密
String MD5Password = getMD5Password(password, salt);
//4、加密后跟数据库密码进行比较
if (!MD5Password.equals(result.getPassword())){
return R.error("账号密码错误");
}
if (result.getStatus() != 1){
return R.error("该账号已被封禁");
}
return R.success(result);
}
标签:加密,登录,盐值,employee,password,salt,MD5 来源: https://www.cnblogs.com/luoxiao1104/p/16381596.html