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