大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
这篇文章主要介绍“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加密验证登录密码怎么实现”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注创新互联网站,小编会继续努力为大家带来更多实用的文章!