思路:
    单纯的MD5加密容易被碰撞破解,考虑将密码加上一个随机字符串(盐),再一同进行MD5加密,提高安全性。
此时,盐相当于另一半秘钥,需将盐一同存入数据库,用以验证。

实现过程:
    一、编写MD5工具类
    二、新增用户时的密码模块
    三、登录校验密码模块
    四、修改用户信息的修改密码模块

一、编写MD5工具类

public class MD5Util {//生成6位随机字符串的盐,由数字、大小写字母组成public static String getSaltString(){String str="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";Random random=new Random();StringBuffer sb = new StringBuffer();for(int i=0;i<6;i++){int num=random.nextInt(str.length());sb.append(str.charAt(num));}return sb.toString();}//把密码 + 盐 ,一同经过MD5加密public static String toMD5String(String str,String salt){try{return Hex.encodeHexString(DigestUtils.md5(str+salt));}catch(Exception e){return null;}}
}

二、新增用户时的密码模块

//******
//获取随机盐
String salt=MD5Util.getSaltString();
//密码、盐一起加密,将加盐加密的密码存入库
user.setPassword(MD5Util.toMD5String(user.getPassword(),salt));
//盐一起存入库
user.setSalt(salt);
userService.insertUsers(user);

三、登录校验密码

//******
//username:前端传来的用户名
//password:前端传来的待校验明文密码
//user:库用户信息
User user = userService.getUsersByName(userName).get(0);
//将明文与盐加密后,与库里的密文相比较,相同则密码正确
if(user.getPassword().equals(MD5Util.toMD5String(password,user.getSalt()))){session.setAttribute("user", user);return "toIndex.do";
}else{return "密码不正确!";
}

四、修改用户信息的修改密码模块

//user:前端传来的待修改的用户对象
//oldUser:数据库里对应的用户对象
//isPswUnchanged:前端传来的参数,用户是否修改密码,没修改true,修改false
//(就是为了判断用户密码是否被修改,也可以在后端判断)
User oldUser=(User)userMapper.selectByPrimaryKey(user.getUserId());
//待校验的密文串 = 用户输入的明文密码串+盐 ,再MD5加密
String password=MD5Util.toMD5String(user.getPassword,oldUser.getSalt);
//修改了密码
if(!isPswUnchanged&&!oldUser.getPassword().equals(password)){String salt=MD5Util.getSaltString();user.setPassword(MD5Util.toMD5String(user.getPassword(),salt));                          user.setSalt(salt);
}else{//未修改密码user.setPassword(oldUser.getPassword());user.setSalt(oldUser.getSalt());
}
userService.updateUser(user);

到此为止,MD5加盐加密的新增、校验、修改几个模块就都结束了。

在此插入我对管理员修改用户信息模块的一个思考:
    需求: 管理员获取所有用户列表,实现对用户的增删改操作,包括修改密码操作。

那么后端在返回所有用户列表时,应注意不能将密码、盐等敏感信息传给前端。

密码MD5加盐加密----注册、校验、修改模块相关推荐

  1. md5加密,md5加盐加密和解密

    package com.java.test;import java.security.MessageDigest; import java.security.SecureRandom; import ...

  2. MD5加盐加密工具类(可直接使用)

    MD5加盐加密工具类 在我们做项目时,涉及到用户密码,而正常来说数据库中不会直接存储明文的密码,都是加密之后的密码. 密码加密的方式有很多,比如: ① 3DES.AES.DES:使用对称加密算法,可以 ...

  3. java md5加盐与解密_md5加密,md5加盐加密和解密

    packagecom.java.test;importjava.security.MessageDigest;importjava.security.SecureRandom;importjava.u ...

  4. MD5加盐加密工具类

    直接使用MD5加密,能被解密网站破解,因此在加密的时候可以加个盐值.工具类如下: import org.apache.commons.codec.binary.Base64; import java. ...

  5. ios MD5加盐加密

    MD5加密 是HASH算法一种. 是生成32位的数字字母混合码. MD5主要特点是 不可逆 MD5算法还具有以下性质: 1.压缩性:任意长度的数据,算出的MD5值长度都是固定的.2.容易计算:从原数据 ...

  6. SpringBooot MD5加盐加密

    String pwd = userInfo.getPassword();//随机生成密码盐(字符)String str = "abcdefghijklmnopqrstuvwxyzABCDEF ...

  7. mysql md5 加盐加密_MD5—加密,加盐

    packagecom.demo.tools;importjava.security.MessageDigest;importjava.security.NoSuchAlgorithmException ...

  8. Java使用MD5加盐对密码进行加密处理,附注册和登录加密解密处理

    前言 在开发的时候,有一些敏感信息是不能直接通过明白直接保存到数据库的.最经典的就是密码了.如果直接把密码以明文的形式入库,不仅会泄露用户的隐私,对系统也是极其的不厉,这样做是非常危险的. 那么我们就 ...

  9. 基于java注册登录MD5算法加盐加密颁发 Token身份令牌使用各种邮箱发送验证码详解雪花算法

    目的作用 == 在项目中,为了防止别人窥视我们的密码通常我们会采取一些加密方式.这里简单介绍一下MD5 加盐加密方法,MD5叫做信息-摘要算法,严格来说不是加密方式,而是信息摘要. 对于可以接触到数据 ...

最新文章

  1. 挺带劲,这款国人开源的监控系统功能真强大~
  2. 点云滤波/分割/关键点提取/配准/识别/重建教程
  3. MATLAB语法基础
  4. 团队竞争力有多强,你的企业就能走多远
  5. 交际过程的两个基本环节_男女相处,若不介意这些“小动作”,基本可以确定“关系暧昧”...
  6. js designMode contentEditable 编辑在线网页
  7. 短信语音验证码发展的必然趋势
  8. springcould结合springbboot微服务 开发@^——^@ 模式讲解
  9. java 字符串截取_java截取字符串几种方式
  10. 读写Word的组件DocX介绍与入门
  11. 《模拟电子技术基础》课程笔记(一)——绪论
  12. Matlab设置黑色背景
  13. 量化交易员珍藏的10本书,一般人不会教你的事
  14. 数据库应用——Atlas代理MySQL集群实现读写分离
  15. 你还在关注 AGV,而 AMR 已经悄然崛起
  16. EasyExcel导出自定义下拉数据集的Excel模板文件
  17. level升级打怪是什么意思_蛮荒神途——资深玩家谈论为什么不喜欢组队原因
  18. Codeforces Round #693 (Div. 3)部分题解
  19. html如何自动适应分辨率,css如何适应不同分辨率?
  20. 易语言HTTP读文件

热门文章

  1. SpringCloud学习(十一)---Spring Cloud Connectors
  2. HTML5实现头像的上传
  3. CIS/CZTS/CISe/CZTSe/CIGSeCIGS量子点(生物标记)
  4. 百万奖池 十大方向 | 第六期论文复现挑战赛如约而至!
  5. 软件测试面试题:优惠券的测试点包含哪些方面?测试点包含哪些方面?
  6. 健身增肌补剂有什么?
  7. 你配不上自己的野心,也辜负了所有的苦难【写给自己】
  8. python手机怎么下载软件_python利器app下载-python利器手机版 _5577安卓网
  9. android版本分布报告,安卓网Android用户地域分布报告:广东占比20%
  10. Red Herring2010年亚洲区创新实用产品排名