一、MD5信息摘要
1.MD5是什么?
MD5信息摘要算法,一种被广泛使用的密码散列函数,提供消息完整性,MD5的长度为128位(按照16进制编码,16字节,得到32个字符)是一个散列值(hash value)。
2.MD5的特性
- 长度固定,任意长度的数据都会输出相同长度的md5值
- 不可逆
- 对原数据进行任何改动,改变一个字节输出数据也会有很大差异
- 抗碰撞性,很少能碰到两个不同的数据具有相同的md5值
3、MD5的用途
- 密码保护 ,如果直接把密码以明码的方式保存到数据库,不使用任何保护措施,很容易导致信息泄露。如果利用MD5对密码进行加密
- 电子签名
4、MD5的应用
先导入MD5jar包
package com.zking.biz.impl;
import org.apache.commons.codec.digest.DigestUtils;
import com.zking.biz.IUserBiz;
import com.zking.dao.IUserDao;
import com.zking.dao.impl.UserDaoImpl;
import com.zking.pojo.User;
public class UserBizImpl implements IUserBiz{
private IUserDao userDao=new UserDaoImpl();
@Override
public User login(User user) {
//调用dao包查询出对应的用户 [在数据库根据账号]
User u= userDao.login(user);
if(u==null) {
System.out.println("该用户账号不存在");
return null;
}
//把输入进来的用户的密码加密 然后再和数据库已经加密的密码作比较
String pwd=DigestUtils.md5Hex(user.getPassword());
//如果执行到这里 【用户的账号一定是对的】
if(!u.getPassword().equals(pwd)) {
//密码不一致
System.out.println("用户密码不一致");
return null;
}
return u;
}
}