Md5优点:快速计算m 。具有单向性 one-way 。不可由散列值推出原消息 。但是如果密码过于简单就会有一定概率被暴力破解 。
密码存储常用方式:
1、双重MD5
2、MD5+加盐
3、双重MD5+加盐
我一般使用2 。只要数据库没有被攻破 。密码被暴力破解的概率是微乎其微的 。
pom文件:
<!--用于加密--><dependency><groupId>commons-codec</groupId><artifactId>commons-codec</artifactId></dependency
//userDO.setPwd(registerRequest.getPwd());//secret保存盐userDO.setSecret("$1$"+CommonUtil.getStringNumRandom(8));//密码+盐处理StringcryptPwd=Md5Crypt.md5Crypt(registerRequest.getPwd().getBytes(),userDO.getSecret());//保存加密后的密码userDO.setPwd(cryptPwd);
publicstaticStringgetStringNumRandom(intlength){Randomrandom=newRandom();//生成随机数字和字母,StringBuildersaltString=newStringBuilder(length);for(inti=1;i<=length;++i){saltString.append(ALL_CHAR_NUM.charAt(random.nextInt(ALL_CHAR_NUM.length())));}returnsaltString.toString();}扥时候 。再使用相同的方法验证密码是否一致
登录的时候 。再使用相同的方法验证密码是否一致
【王小云md5破解方法 md5逆向破解教程步骤】List<UserDO>userDOList=userMapper.selectList(newQueryWrapper<UserDO>().eq("mail",loginRequest.getMail()));if(userDOList!=null&&userDOList.size()==1){//已经注册UserDOuserDO=userDOList.get(0);StringcryptPwd=Md5Crypt.md5Crypt(loginRequest.getPwd().getBytes(),userDO.getSecret());if(cryptPwd.equals(userDO.getPwd())){//登陆成功 。生成tokenTODOreturnnull;}else{returnjsonData.buildResult(BizCodeEnum.ACCOUNT_PWD_ERROR);}
推荐阅读
- 你认为人类多少年内有希望接触到外星人呢?
- 有没有耍人玩的小套路或者小段子?
- 飞机模拟驾驶游戏大全,steam好玩的飞机游戏推荐
- 当对一个人动了真感情而他只是想玩玩,那么怎样才能退出这段不该的情呢?
- 经常有报道说某小行星接近地球,然后又擦肩而过。那么它们从哪里来?又到哪里去?
- wordpress主题制作开发教程 wordpress建站详细过程
- 为什么渣男追女生屡屡得手?渣男都有哪些套路?
- 过期身份证还能使用多长时间?
- 朋友圈公布对象一句话精致文案 如何发朋友圈公布对象