美文网首页
MD5加密(mysql用户密码加密)

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

作者: writeanewworld | 来源:发表于2017-12-16 09:36 被阅读0次

    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

    相关文章

      网友评论

          本文标题:MD5加密(mysql用户密码加密)

          本文链接:https://www.haomeiwen.com/subject/eqxswxtx.html