zoukankan      html  css  js  c++  java
  • MD5加强加密实现

    关于MD5加密,简单来说没事可以起到加密数据的效果的,但是网上层出不穷的MD5在线破解.....,索性找到了一个可以防止MD5破解的小道,接下来就为大家分享下这个思路以及源码。


    我们主要模拟用户的注册和登录加密传输密码部分

    注册

    用户将明文密码上传到服务器,经由服务器转换后,传给前台一个加密后的MD5值

    登录

    用户将加密过的密码字符串在指定位置添加自定义的字符,发送给后台,后台再次在某个位置,加入自定义字符,返回给前台,用户使用两次打乱过的字符串密码进行登录。后台接收到字符串后,替换掉指定的字符,解出原来的MD5值,和数据库进行匹配,匹配成功,进行登录,否则拒绝登录。

    代码部分

    前台加密部分,在前台部分加密,将加密的字符串发送到后台。

    replaceStr(passwordMD5){   //对用户的密码进行加密处理,回传给后台的时候进行,逆向获取密码值然后进行规则匹配,存储密码
      var substr = passwordMD5+"";
      var a = substr.substring(0,5);//前五位
      var ax = substr.substring(5,6)//获取第六个的数值
      var b = substr.substring(6,14);//6-15位
      var bx =  substr.substring(14,15)//获取第15个的数值
      var c = substr.substring(15,21)//获取第16-21个的数值
      var cx = substr.substring(21,22)//获取第22个的数值
      var d = substr.substring(22)//获取第22位之后的所有数值
      var md5back = a+"s"+b+"t"+c+"a"+d;//我是处理后的字符串
      var md5my = ax+bx+cx;
      this.md5back = md5back;
      this.md5ReCode = md5my;
    }
    

    后台加密部分,将前台发来的字符串再次进行加密,然后回传给前台,前台利用这个字符串进行登录。

    @CrossOrigin
    @GetMapping("md5Produce")
    public Map<String, Object> produce(
            @RequestParam("md5Str") String md5Str,
            @RequestParam("reCodeMd5") String reCodeMd5
    ){//获取到字符串,处理后返回
        try{
            String abc = md5Str.substring(0,7) + "r" + md5Str.substring(8,18) + "b" +md5Str.substring(19,26)+"t"+ md5Str.substring(27);//更改后的加密字符
            String def = md5Str.substring(7,8)+ md5Str.substring(18,19) +md5Str.substring(26,27);//更改后的加密字符
            String ghi = reCodeMd5 + abc + def;//将加密后的字符和加密用到的字符串一并返回出去
            if(ghi != null){
                return WebResult.success().put("dataVo",ghi).toMap();//返回的是加密之后并且被乱码的md5值
            }
        }catch(Exception e){
          LOGGER.error(e.getMessage(),e);
          return WebResult.failure("执行失败,请稍后重试!").toMap();
        }
        return WebResult.failure("执行失败,请稍后重试!").toMap();
    }
    

    后台登录解密部分,在这里进行加密后的密码解密部分,然后使用解密到的MD5值匹配登录。

    后台(解密方法)
    /**
     * 获取登录的md5值,然后恢复md5值进行判断
     * @param loginMd5
     * @return
     */
    @GetMapping("loginUser")
                  public Map<String, Object> loginInfo(
                          @RequestParam("loginMd5") String loginMd5
                  ){
                    try{
                        /*首先截取需要是哟哦哦那个到的原本字符,然后进行替换*/
                        String head3 = loginMd5.substring(0,3);//前三位
                        String foot3 = loginMd5.substring(35);//后三位
                        String bodyCon = loginMd5.substring(3,35);//主要部分内容(32位加密字符)
                        String head3Pj = bodyCon.substring(0,5) + head3.substring(0,1) + bodyCon.substring(6,14) + head3.substring(1,2) + bodyCon.substring(15,21) +  head3.substring(2,3) + bodyCon.substring(22);
                        String footPj =  head3Pj.substring(0,7) +foot3.substring(0,1) + head3Pj.substring(8,18) + foot3.substring(1,2) +head3Pj.substring(19,26)+foot3.substring(2,3)+ head3Pj.substring(27);
                        String Result = footPj;//这是经过一波三折后来到的md5值,可以被直接破解的那种
    
                    }catch(Exception e){
                        LOGGER.error(e.getMessage()+"登录的md5值出现问题",e);
                        return WebResult.failure("操作失败,请稍后重试").toMap();
                    }
                      return null;
                  }
    
  • 相关阅读:
    转发自lealii 的博客,如有侵权请通知删除
    SQL注入详解-转发
    IT实用技术资源整理
    JMeter-接口自动化之正则表达式关联
    转发自_destiny如有侵权请联系删除
    二元数组的最小值最大和
    连续区间和大于等于某个数(弱化版)
    独一无二的最小生成树
    牛客小白月赛19 弱版 C
    牛客 安徽大学新生赛 G
  • 原文地址:https://www.cnblogs.com/nanstar/p/12572268.html
Copyright © 2011-2022 走看看