Spring security密碼加密實(shí)現(xiàn)代碼實(shí)例
xml配置如下
<dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-core</artifactId> <version>3.2.3.RELEASE</version> </dependency>
BCryptPasswordEncoder相關(guān)知識(shí):
用戶表的密碼通常使用MD5等不可逆算法加密后存儲(chǔ),為防止彩虹表破解更會(huì)先使用一個(gè)特定的字符串(如域名)加密,然后再使用一個(gè)隨機(jī)的salt(鹽值)加密。
特定字符串是程序代碼中固定的,salt是每個(gè)密碼單獨(dú)隨機(jī),一般給用戶表加一個(gè)字段單獨(dú)存儲(chǔ),比較麻煩。
BCrypt算法將salt隨機(jī)并混入最終加密后的密碼,驗(yàn)證時(shí)也無需單獨(dú)提供之前的salt,從而無需單獨(dú)處理salt問題。
代碼如下
import org.springframework.security.crypto.bcrypt.BCrypt;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
public class Test {
public static void main(String[] args) {
// springsecurity 注冊(cè)加密方法
BCryptPasswordEncoder bCryptPasswordEncoder = new BCryptPasswordEncoder();
String encode = bCryptPasswordEncoder.encode("1");
System.out.println(encode);
//$2a$10$H2HTe3SVdKMk8ewC3gRKouva7U6DAQspHqyhcdg805JGHAApV1Wci
//$2a$10$Iz4Y52GmirUf5SRW6jTIA.0cgaS0mKTYZVN2cFFeK8DXk9YHVhJDW
// springsecurity 登錄加密方法
BCrypt bCrypt = new BCrypt();
String hashpw = bCrypt.hashpw("1", "$2a$10$Iz4Y52GmirUf5SRW6jTIA.0cgaS0mKTYZVN2cFFeK8DXk9YHVhJDW");
System.out.println(hashpw);
}
}
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Spring Security基于散列加密方案實(shí)現(xiàn)自動(dòng)登錄功能
- Spring security實(shí)現(xiàn)對(duì)賬戶進(jìn)行加密
- Spring Security使用數(shù)據(jù)庫認(rèn)證及用戶密碼加密和解密功能
- Spring?Security如何實(shí)現(xiàn)升級(jí)密碼加密方式詳解
- Python 內(nèi)置函數(shù)globals()和locals()對(duì)比詳解
- Python基礎(chǔ)教程之內(nèi)置函數(shù)locals()和globals()用法分析
- python內(nèi)置函數(shù)globals()的實(shí)現(xiàn)代碼
相關(guān)文章
SpringBoot Validation入?yún)⑿r?yàn)國(guó)際化的項(xiàng)目實(shí)踐
在Spring Boot中,可以使用Validation和國(guó)際化來實(shí)現(xiàn)對(duì)入?yún)⒌男r?yàn),本文就來介紹一下SpringBoot Validation入?yún)⑿r?yàn)國(guó)際化,具有一定的參考價(jià)值,感興趣的可以了解一下2023-10-10
Spring MVC 中攔截器的使用示例詳解"攔截器基本配置"和 &q
Spring MVC 的攔截器作用是在請(qǐng)求到達(dá)控制器之前或之后進(jìn)行攔截,可以對(duì)請(qǐng)求和響應(yīng)進(jìn)行一些特定的處理,這篇文章主要介紹了Spring MVC 中的攔截器的使用“攔截器基本配置” 和 “攔截器高級(jí)配置”,需要的朋友可以參考下2024-07-07
spring @Scheduled定時(shí)任務(wù)注解使用方法及注意事項(xiàng)小結(jié)
Spring的@Scheduled注解用于定時(shí)任務(wù)調(diào)度,默認(rèn)單線程依次執(zhí)行,可以通過配置多線程調(diào)度器或使用@Async注解實(shí)現(xiàn)并行執(zhí)行,常見參數(shù)包括cron、fixedRate、fixedDelay、initialDelay等,本文介紹spring @Scheduled定時(shí)任務(wù)注解使用方法,感興趣的朋友一起看看吧2025-02-02
spring boot加載資源路徑配置和classpath問題解決
這篇文章主要介紹了spring boot加載資源路徑配置和classpath問題解決,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-03-03
SpringBoot監(jiān)聽?wèi)?yīng)用程序啟動(dòng)的生命周期事件的四種方法
在 Spring Boot 中,監(jiān)聽?wèi)?yīng)用程序啟動(dòng)的生命周期事件有多種方法,本文給大家就介紹了四種監(jiān)聽?wèi)?yīng)用程序啟動(dòng)的生命周期事件的方法,并通過代碼示例講解的非常詳細(xì),具有一定的參考價(jià)值,需要的朋友可以參考下2024-07-07
淺談Java HttpURLConnection請(qǐng)求方式
這篇文章主要介紹了淺談Java HttpURLConnection請(qǐng)求方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-08-08

