基於MD5鹽值的密碼加密與驗證方式


數據庫表字段保存生成的隨機鹽值以進行后續驗證登錄

注冊加密

controller層獲取用戶輸入的用戶名和密碼調用方法這里不再贅述,直接上實現代碼

service實現層


/**
* 用戶注冊
* @param user 將要注冊的用戶數據

*/

public void reg(User user){

// - 生成隨機鹽
String salt = UUID.randomUUID().toString().toUpperCase();
// - 基於原密碼和鹽值執行加密
String md5Password = getMd5Password(user.getPassword(), salt);
// - 將鹽和加密結果封裝到user對象中
user.setSalt(salt);
user.setPassword(md5Password);

// 執行注冊
Integer rows = userMapper.insert(user);

}

 

驗證登錄方式

根據登錄名獲取數據表中用戶生成密碼的鹽值反加密后進行比對

String md5Password = getMd5Password(password, salt);

 

密碼的加密方法(根據需要自行設置)

/**
* 將密碼執行加密
* @param password 原密碼
* @param salt 鹽值
* @return 加密后的結果
*/
private String getMd5Password(String password, String salt) {
// 拼接原密碼與鹽值
String str = salt + password + salt;
// 循環加密5次
for (int i = 0; i < 5; i++) {

// DigestUtils:springboot提供的工具類
str = DigestUtils.md5DigestAsHex(
str.getBytes()).toUpperCase();
}
// 返回結果
return str;
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM