用戶管理是一個項目要提供的基本功能,一個用戶的基本信息包括登陸名和密碼。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; } }