最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java實(shí)現(xiàn)BCrypt密碼加密的示例

 更新時(shí)間:2026年04月15日 08:14:45   作者:用戶(hù)668859984766  
本文介紹了MySQL數(shù)據(jù)庫(kù)密碼安全存儲(chǔ)的方法,使用BCrypt不可逆加密,自動(dòng)加鹽,每次加密結(jié)果不同,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

1.作用

如果MYSQL數(shù)據(jù)庫(kù)被盜,賬號(hào)密碼就全沒(méi)了,所以要加密。還有可能蹲號(hào)子

BCrypt特點(diǎn)

  • 不可逆加密(無(wú)法解密回原文)
  • 自動(dòng)加鹽(同一個(gè)密碼每次加密結(jié)果都不一樣)
  • 安全、簡(jiǎn)單、Spring自帶

2.BCrypt兩個(gè)核心方法

  1. 加密:BCrypt.hashpw(明文密碼,BCrypt.gensalt())
  2. 驗(yàn)證:BCrypt.checkpw(明文密碼,加密后密碼)

3.迭代一下登錄代碼

注冊(cè)時(shí)→密碼加密存儲(chǔ)

UserController.java注冊(cè)部分:

@PostMapping("/register") 
public String register(@RequestBody User user) {
// 明文密碼加密 
String rawPassword = user.getPassword(); 
String encodePassword = BCrypt.hashpw(rawPassword, BCrypt.gensalt());
user.setPassword(encodePassword); // 存入加密后的密碼 
userService.register(user); 
return "success"; 
}

登陸時(shí)→對(duì)比驗(yàn)證

重點(diǎn):不能用where password=?查詢(xún)!必須先查用戶(hù),再比對(duì)密碼!

UserController.java登錄部分:

@PostMapping("/login") 
public String login(String username, String password, HttpSession session) {
// 1. 只根據(jù)用戶(hù)名查用戶(hù)
User user = userService.findByUsername(username); 

if (user == null) {
return "fail"; 
} 
// 2. 使用 BCrypt 校驗(yàn)密碼(明文 vs 密文) 
boolean ok = BCrypt.checkpw(password, user.getPassword()); 

if (ok) { 
session.setAttribute("loginUser", user);
return "success";
} else { 
return "fail";
} 
}

UserService增加方法

public User findByUsername(String username) {
return userMapper.findByUsername(username); 
}

UserMapper增加

User findByUsername(String username);

User Mapper.XML增加

<select id="findByUsername" resultType="com.example.easy_add_del_change_select.pojo.User"> 
select * from user where username=#{username} 
</select>

4.最終效果

  • 數(shù)據(jù)庫(kù)里密碼長(zhǎng)這樣:

$2a$10$xxxxxxx...

  • 任何人都無(wú)法反查原文
  • 即使數(shù)據(jù)庫(kù)泄露,密碼也沒(méi)用
  • 企業(yè)標(biāo)準(zhǔn)安全方案

5.總結(jié)

密碼不能明文存儲(chǔ),必須使用 BCrypt 不可逆加密,自動(dòng)加鹽,每次加密結(jié)果不同,登錄時(shí)通過(guò) checkpw 方法比對(duì),安全性極高。

到此這篇關(guān)于Java實(shí)現(xiàn)BCrypt密碼加密的示例的文章就介紹到這了,更多相關(guān)Java BCrypt密碼加密內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringBoot中EasyExcel實(shí)現(xiàn)execl導(dǎo)入導(dǎo)出

    SpringBoot中EasyExcel實(shí)現(xiàn)execl導(dǎo)入導(dǎo)出

    本文主要介紹了SpringBoot中EasyExcel實(shí)現(xiàn)execl導(dǎo)入導(dǎo)出,實(shí)現(xiàn)了如何準(zhǔn)備環(huán)境、創(chuàng)建實(shí)體類(lèi)、自定義轉(zhuǎn)換器以及編寫(xiě)導(dǎo)入邏輯的步驟和示例代碼,感興趣的可以了解下
    2023-06-06
  • SpringBoot?OpenFeign整合okHttpClient實(shí)踐

    SpringBoot?OpenFeign整合okHttpClient實(shí)踐

    SpringCloud默認(rèn)使用JDK自帶HttpURLConnection進(jìn)行數(shù)據(jù)傳輸,但沒(méi)有連接池,意味著每發(fā)起一個(gè)請(qǐng)求都會(huì)創(chuàng)建一個(gè)新連接,為提高系統(tǒng)的穩(wěn)定,需要使用池化技術(shù),這里使用OkHttpClient進(jìn)行池化配置,并給出配置示例和注意事項(xiàng)
    2026-04-04
  • IDEA更改Terminal的方法步驟

    IDEA更改Terminal的方法步驟

    Windows上開(kāi)發(fā)有時(shí)候cmd不支持bash命令,有些操作就會(huì)非常麻煩,本文主要介紹了IDEA更改Terminal的方法步驟,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-09-09
  • Java 實(shí)用工具類(lèi)Spring 的 StopWatch常用方法

    Java 實(shí)用工具類(lèi)Spring 的 StopWatch常用方法

    StopWatch 是 Spring 框架中極其實(shí)用的開(kāi)發(fā)輔助工具,它為性能分析和調(diào)試提供了輕量但強(qiáng)大的能力,使用簡(jiǎn)單、無(wú)需復(fù)雜配置,本文給大家介紹Java 實(shí)用工具類(lèi)Spring 的 StopWatch常用方法,感興趣的朋友一起看看吧
    2025-04-04
  • Java 基于tcp協(xié)議實(shí)現(xiàn)文件上傳

    Java 基于tcp協(xié)議實(shí)現(xiàn)文件上傳

    這篇文章主要介紹了Java 基于tcp協(xié)議實(shí)現(xiàn)文件上傳,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下
    2020-11-11
  • SpringMVC深入講解文件的上傳下載實(shí)現(xiàn)

    SpringMVC深入講解文件的上傳下載實(shí)現(xiàn)

    這篇文章主要為大家詳細(xì)介紹了springMVC實(shí)現(xiàn)文件上傳和下載的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • Spring?Cloud?Gateway?2.x跨域時(shí)出現(xiàn)重復(fù)Origin的BUG問(wèn)題

    Spring?Cloud?Gateway?2.x跨域時(shí)出現(xiàn)重復(fù)Origin的BUG問(wèn)題

    這篇文章主要介紹了Spring?Cloud?Gateway?2.x跨域時(shí)出現(xiàn)重復(fù)Origin的BUG問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • Java實(shí)現(xiàn)單鏈表的操作

    Java實(shí)現(xiàn)單鏈表的操作

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)單鏈表的操作,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • java使用顏色選擇器示例分享

    java使用顏色選擇器示例分享

    這篇文章主要介紹了java使用顏色選擇器示例,需要的朋友可以參考下
    2014-03-03
  • 詳解如何通過(guò)Java實(shí)現(xiàn)壓縮PDF文檔

    詳解如何通過(guò)Java實(shí)現(xiàn)壓縮PDF文檔

    PDF文檔是我們?nèi)粘^k公中使用最頻繁的文檔格式。但因?yàn)榇蠖鄶?shù)PDF文檔都包含很多頁(yè)面圖像或大量圖片,這就導(dǎo)致PDF文檔過(guò)大,處理起來(lái)較為麻煩。本文將介紹如何通過(guò)Java應(yīng)用程序壓縮PDF文檔,需要的可以了解一下
    2022-12-12

最新評(píng)論

荔浦县| 织金县| 台南市| 张北县| 平凉市| 清水县| 甘孜县| 天津市| 民权县| 江津市| 田阳县| 绍兴县| 瑞安市| 闻喜县| 馆陶县| 曲阳县| 浪卡子县| 溧水县| 白玉县| 浮梁县| 齐河县| 佳木斯市| 黔南| 巢湖市| 小金县| 融水| 民县| 朝阳区| 鄂温| 保康县| 开封县| 玉山县| 保山市| 青铜峡市| 抚远县| 高尔夫| 即墨市| 莫力| 分宜县| 博乐市| 天祝|