Java中的MD5加密

背景

用户管理是一个项目要提供的基本功能,一个用户的基本信息包括登陆名和密码。java

而且密码以明文方式存在数据库是不合理的,必须加密。算法

密码存储发展过程

  • 第一代密码

用户名和密码以明文方式存在数据库中。(容易泄露)spring

  • 第二代密码

对用户的密码加密处理后存储在数据库中。(可是密码不够复杂,仍是会被破解)数据库

  • 第三代密码

对用户的信息,增长了一个字段:盐值 salt加密

Salt 能够是任意字母、数字、或是字母或数字的组合,但必须是随机产生的,每一个用户的 Salt 都不同,用户注册的时候,数据库中存入的不是明文密码,也不是简单的对明文密码进行散列,而是 MD5( 明文密码 + Salt)spa

 

密码加密方式

在加密算法上,能够使用MD5加密算法,缘由有二:设计

1. 这个算法是单向的,即便获得密文,也没法推断出明文。code

2. 不管密码有多长,经过MD5计算以后获得的是一个固定长度的结果,有利于数据库的设计。md5

实例实现

import org.springframework.util.DigestUtils;
import com.bdp.commons.utils.StringUtils;

public class Md5 {

 
    public static String getMd5(long seckillId) {
        // 加入一个盐值,用于增长密码破解难度
        String salt = StringUtils.getUUId();
        String base = seckillId + salt;
        //获取加密后的密码
        String md5 = DigestUtils.md5DigestAsHex(base.getBytes());
        return md5;
    }
}
相关文章
相关标签/搜索