标签:加密 登录 盐值 employee password salt 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
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。