温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

MD5加密验证登录密码怎么实现

发布时间:2021-12-18 14:18:09 来源:亿速云 阅读:705 作者:iii 栏目:大数据

这篇文章主要介绍“MD5加密验证登录密码怎么实现”,在日常操作中,相信很多人在MD5加密验证登录密码怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MD5加密验证登录密码怎么实现”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

加密,指的是对数据进行转换以后,数据变成了另一种格式,并且除了拿到解密方法的人,没人能把数据转换回来。

因此,加密通常用于网络通信。因为网络上的通信数据,任何人都有可能会拿到,把数据加密后再传送,送达以后由对方解密后再查看,就可以防止网络上的偷窥。

MD5是一种常用的的加密算法。

01

工具类:MD5Util

package com.zd.ems.util;
import java.security.MessageDigest;import java.security.NoSuchAlgorithmException;
/** * MD5加密解密 * */public class MD5Util {  /**   * MD5加密方法   * @param str不允许为null  传入的需要进行MD5加密的String字符串,   * @return MD5加密后的字符串   * @throws NoSuchAlgorithmException   */  public static String EncodeByMD5(String str) throws NoSuchAlgorithmException{    //获取一个信息摘要器    MessageDigest messageDigest = MessageDigest.getInstance("MD5");    //通过将字符串填充到摘要器中并进行hash计算得到一个长度为16的byte数组    byte[] weitHandleByte = messageDigest.digest(str.getBytes());    //临时存放weitHandleByte    int tempWeitHandleByte;    //创建一个StringBuffer 用于装在载加密后的字符    StringBuffer sb = new StringBuffer();    //遍历获取到的byte数组,生成具体的MD5密码    for (byte b : weitHandleByte) {      tempWeitHandleByte = b;      if(tempWeitHandleByte<0)        tempWeitHandleByte+=265;      if(tempWeitHandleByte<16)        sb.append("0");      sb.append(Integer.toHexString(tempWeitHandleByte));    }    return getBegginAndEndStr(sb.toString().substring(8, 24));  }  /**   * @param str不允许为null 需要核对的字符串   * @param codeStr str经过MD5加密后的字符串   * @return 返回对比结果   * @throws NoSuchAlgorithmException   */  public static boolean DecodeByMD5(String str,String codeStr) throws NoSuchAlgorithmException{    String temp = EncodeByMD5(str);    if(temp.startsWith(codeStr.substring(0, 5))&&temp.endsWith(codeStr.substring(11,16)))      return true;    else      return false;  }
 /**   * 为了防止暴力破解密码,因此需要经过截取前5个字符和后5个字符以及随机生成的6个字符拼接字符串   * @param str MD5加密后的字符串   * @return 返回经过截取前5个字符和后5个字符以及随机生成的6个字符拼接而成的字符串   */  private static String getBegginAndEndStr(String str){    //截取MD5加密后的前5个字符    String beggin = str.substring(0,5);    //截取MD5加密后的后5个字符    String end = str.substring(11,16);    //创建6个随机的字符    String middle="";    for(int i=0;i<3;i++)      middle = middle+Integer.toHexString((int)(16+Math.random()*(265-16+1)));    return beggin+middle+end;  }} 

02

新增用户时对密码加密

//用户输入123456//对输入的密码进行加密:使用MD5Util.EncodeByMD5("要加密的密码”)employee.setPassword(MD5Util.EncodeByMD5(employee.getPassword()));//数据库中保存的密码格式65d718af4e40b3f2

03

用户登录时检验密码正确性

//首先根据用户名查询用户对象:用户名要唯一Employee emp=empService.login(username);//如果用户存在if(!StringUtils.isEmpty(emp)) {      //MD5验证密码:其实就是对数据库中的密码进行解密      Boolean check=MD5Util.DecodeByMD5(password, emp.getPassword());      //如果数据库中解密后的密码与登录页面输入的密码一致,登录成功      if(check) {        HttpSession session = request.getSession();        session.setAttribute("employee", emp);        result.put("employee",emp);        result.put("userExsit",true);      }else {        result.put("userExsit",false);      }

到此,关于“MD5加密验证登录密码怎么实现”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

md5
AI