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;
    }
}
相關文章
相關標籤/搜索