大橙子网站建设,新征程启航

为企业提供网站建设、域名注册、服务器等服务

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

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

创新互联建站-专业网站定制、快速模板网站建设、高性价比平房网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式平房网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖平房地区。费用合理售后完善,十载实体公司更值得信赖。

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

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

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加密验证登录密码怎么实现”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注创新互联网站,小编会继续努力为大家带来更多实用的文章!


分享标题:MD5加密验证登录密码怎么实现
标题链接:http://dzwzjz.com/article/jgddhc.html
在线咨询
服务热线
服务热线:028-86922220
TOP