MD5加密(mysql用户密码加密)

1.MD5简介
其实严格上来说MD5并不能说是加密算法,只能说是哈希算法。理论上每个字符串都有唯一一个哈希值与之相对应,但是这并不是绝对的,有一定几率会发生冲突,就叫做哈希冲突,这是评价哈希算法好坏的重要指标。

2.不可逆推
理论上使用md5加密过的明文是不可以逆推的,但是却可以使用穷举法,实现穷举出一个字典,在字典中直接使用哈希值进行发查字符串。 我个人觉得完全可以将一段明文进行MD5加密,然后将加密后的信息再进行加密,这样逆推起来就没有那么容易了。

3.加密解密
有网页端的在线加密、 在线解密工具,自行百度使用。

4.项目中的使用
在javaweb项目中,一般对数据 库操作中进行密码的插入操作往往需要对密码进行加密操作。有一些网站设置有找回密码功能感觉他们的数据就是明文的。

5.实例 : 商家注册接口实现
基本逻辑 :
淘宝用户注册成商家,注册时需要获取用户表中的用名 密码进行对比,看是否相同,相同再执行其他操作。获取表单提交的密码,导入apache提供的md5 jar包,然后使用
String changedPswd = DigestUtils.md5Hex(pswd); 对密码进行加密之后再放入数据库。

  //商家注册接口 (Mapper->注册)
//MD5是不可逆加密的,所以想判断用户密码是否已经存在(注册),只有将加密过的用户密码取出来,再把商家输入的表单密码拿过来加密比较是否相同。
@RequestMapping(value="businessRegister",method=RequestMethod.POST)
@ResponseBody
public Map<String, Object> register(MultipartFile[] photo, Business business,Integer userId) {
      Map<String, Object> map = new HashMap<String, Object>();
      User user = userService.findUserByUserId(userId);
      //获取用户的账号
      String userTelAccount = user.getUserMemberName();
      
      //获取用户的密码
      String userPwd = user.getUserPassword();
      //MD5加密用户密码
    //  String changeduserPwd = DigestUtils.md5Hex(userPwd);
      
      //表单提交过来的密码
      String pswd = business.getBusinessPassword();
      //MD5加密密码
      String changedPswd = DigestUtils.md5Hex(pswd);
      //set到密码中进行插入数据库操作
      business.setBusinessPassword(changedPswd);
      
      //判断用户的用户名跟密码是否与商家的用户名与密码相同 这里是使用用户账号密码
      if(userTelAccount.equals(business.getBusinessLoginTel()) && changedPswd.equals(userPwd)){  //用户表中已经对密码进行了加密了,所以这里不需要再进行加密了判断了,直接使用equals进行判断就行了。
          for(int i=0;i<photo.length;i++){
              String fileName = UUID.randomUUID() + photo[i].getOriginalFilename();
              try {
                File file = new File(fileName);
                photo[i].transferTo(file);
                FileCopyUtil.copyFile(fileName);
                if(i==0){business.setBusinessIconUrl(ConstantData.UPLOAD_PATH + fileName);}
                if(i==1){business.setBusinessCard(ConstantData.UPLOAD_PATH + fileName);}
                if(i==2){business.setBusinessIDCardPositiveUrl(ConstantData.UPLOAD_PATH + fileName);}
                if(i==3){business.setBusinessIDCardOppositeUrl(ConstantData.UPLOAD_PATH + fileName);}
            } catch (IllegalStateException | IOException e) {
                e.printStackTrace();
            }
          }
            //将图片路径插入到数据库
            int count = businessService.addBusiness(business);
            if(count > 0){
                map.put("reason", "商家所有图片信息上传成功!");
                map.put("resultCode", ConstantData.STATUS_CODE_1);
            }else{
                map.put("reason", "商家所有图片信息上传失败!");
                map.put("resultCode", ConstantData.STATUS_CODE_2);
            }
            
      }else{
         //用户名密码不匹配
         map.put("reason", "用户名或者密码输入错误!"); 
         map.put("resultCode",ConstantData.STATUS_CODE_6);
      }
      
      return map;
}

image.png

推荐阅读更多精彩内容