这篇文章主要介绍“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());//临时存放weitHandleByteint 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;elsereturn 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()));//数据库中保存的密码格式65d718af4e40b3f203
用户登录时检验密码正确性
//首先根据用户名查询用户对象:用户名要唯一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加密验证登录密码怎么实现”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。