一文掌握SpringSecurity?BCrypt密碼加密和解密
BCrypt就是一款加密工具,可以比較方便地實現(xiàn)數(shù)據(jù)的加密工作。也可以簡單理解為它內(nèi)部自己實現(xiàn)了隨機加鹽處理。例如,使用MD5加密,每次加密后的密文其實都是一樣的,這樣就方便了MD5通過大數(shù)據(jù)的方式進行破解。
BCrypt生成的密文是60位的,而MD5的是32位的。
BCryptPasswordEncoder 是 Spring Security 官方推薦的密碼解析器。BCryptPasswordEncoder 類是PasswordEncoder接口的實現(xiàn)類。
BCryptPasswordEncoder 是對 BCrypt 強散列方法的具體實現(xiàn)。是基于 Hash 算法實現(xiàn)的單向加密??梢酝ㄟ^ strength 控制加密強度,默認 10.
使用BCrypt能實現(xiàn)每次加密的值都是不一樣的。
在PasswordEncoder接口中有三個方法:
String encode(CharSequence rawPassword)
:加密原始密碼。而BCrypt實現(xiàn)類會隨機生成的salt來進行加密。boolean matches(CharSequence rawPassword, String encodedPassword)
:對加密的密碼和傳入的原始密碼進行驗證。如果密碼匹配則返回true,否則返回false。存儲的密碼本身永遠不會被解碼。rawPassword
:原始密碼,比如加密前密碼是“123”,這里就傳入“123”encodedPassword
:加密后的密碼
boolean upgradeEncoding(String encodedPassword)
:如果加密后的密碼需要重新加密以提高安全性,則返回true,否則返回false。默認返回false。encodedPassword
:加密后的密碼
需要的maven依賴:
<!-- SpringBoot項目中的依賴 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency>
<!-- 非SpringBoot項目的依賴,SpringBoot項目也能用 --> <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-web</artifactId> </dependency> <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-config</artifactId> </dependency>
測試方法
public class BcryptTest { public static void main(String[] args) { // 用戶密碼 String password = "123123"; // 創(chuàng)建密碼加密的對象 BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder(); // 密碼加密 String newPassword = passwordEncoder.encode(password); System.out.println("加密后的密碼為:" + newPassword); // 校驗這兩個密碼是否是同一個密碼 // matches方法第一個參數(shù)是原密碼,第二個參數(shù)是加密后的密碼 boolean matches = passwordEncoder.matches(password, newPassword); System.out.println("兩個密碼一致:" + matches); } }
執(zhí)行結果:
到此這篇關于【SpringSecurity】BCrypt密碼加密和解密 一文學會使用BCryptPasswordEncoder的文章就介紹到這了,更多相關BCrypt密碼加密和解密內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
- 解決Spring security5.5.7報錯Encoded password does not look like BCrypt異常
- 使用spring?security?BCryptPasswordEncoder接入系統(tǒng)
- 如何在spring boot項目中使用Spring Security的BCryptPasswordEncoder類進行相同密碼不同密文的加密和驗證
- Springboot基于BCrypt非對稱加密字符串的實現(xiàn)
- SpringBoot整合BCrypt實現(xiàn)密碼加密
- Spring security BCryptPasswordEncoder密碼驗證原理詳解
- Spring項目使用Maven和BCrypt實現(xiàn)修改密碼功能方式
相關文章
Springboot集成JWT實現(xiàn)登錄注冊的示例代碼
本文主要介紹了Springboot集成JWT實現(xiàn)登錄注冊的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2024-06-06java kafka寫入數(shù)據(jù)到HDFS問題
這篇文章主要介紹了java kafka寫入數(shù)據(jù)到HDFS問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-08-08java實現(xiàn)jdbc查詢結果集result轉(zhuǎn)換成對應list集合
本文給大家匯總介紹了java實現(xiàn)jdbc查詢結果集result轉(zhuǎn)換成對應list集合,十分的簡單,有相同需求的小伙伴可以參考下。2015-12-12SpringBoot2.x 整合 thumbnailator 圖片處理的示例代碼
這篇文章主要介紹了SpringBoot2.x 之整合 thumbnailator 圖片處理,本文通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-10-10基于Java實現(xiàn)進制轉(zhuǎn)換工具類的示例代碼
這篇文章主要為大家詳細介紹了如何基于Java實現(xiàn)進制轉(zhuǎn)換工具類,從而實現(xiàn)減少參數(shù)長度的效果,文中的示例代碼講解詳細,需要的可以參考一下2023-02-02