spring security 中解密時如何解密的?

時間 2022-01-18 00:51:32

1樓:韓Uncle

首先LZ放了個普遍錯誤——加密/解密與Hash的概念混淆,Sha系列是Hash演算法,不是加密演算法,加密意味著可以解密(這個與編碼/解碼一樣),但是Hash是不可逆的(one-way hash function)。

OK,現在可以回答LZ的問題,Spring Security的PasswordEncoder可以選多種Hash演算法,然後可以配置是否把Hash結果用Base64編碼(或者用Hex十六進製制表示,預設),然後得到的結果存庫(假設用的DB儲存);然後密碼匹配階段並沒有進行解密(因為是Hash,是不可逆的,也即解不開),而是根據配置,先進行解碼(注意是解碼),得到hash值;然後使用相同的演算法把現在使用者輸入的密碼進行hash(假設LZ是在使用者登陸階段使用),然後看現在的hash值是否與剛剛解碼出來(從庫中使用者表讀取的)hash值相等,如果等說明使用者密碼正確。

這正是為什麼處理密碼要用hash演算法,而不用加密,因為這樣處理即使庫洩漏,黑客也很難(加鹽可以說幾乎不可能,MD5除外)破解密碼(破解密碼只能用彩虹錶用相同的hash演算法hash然後匹配,乙個乙個試)。

2樓:人機王

我印象中BCryptPasswordEncoder本身的實現原理和你使用方式是基本一致的(金鑰+隨機鹽+迭代SHA演算法),而且使用起來也更加方便,如果你要自定義隨機鹽之類的,可以參照一下bcrypt是怎麼做的。

另外BCryptPasswordEncoder的使用:

加密:bcryptPasswordEncoder.encoder(password)

解密:bcrytPasswordEncoder.matches(rawPassword,encodedPassword)

spring security為什麼這麼複雜?

cxxgg 說到這個,我之前也覺得,但是看了這個講的,挺細節深入的,感覺還不錯,可以看看 SpringSecurity安全框架精講課程 JWT 從入門到精通Spring Security 完整版教程.讓你輕鬆駕馭安全框架 嗶哩嗶哩 cdgeass session放redis 裡直接用spring s...

中建三局裝飾 中建華鼎裝飾 中建海外裝飾 中建中裝哪個好?

給點進這個答案的提個醒,千萬別去中建裝飾西北公司,人力招聘乙個字都不能信,基本工資2800,所有補貼加完扣完五險一金到手3200,飯都吃不起。一年招聘的不如乙個月辭職的,極度缺人,專案上乙個人當五個人用,重傷不下火線,365天無休毫不誇張。 bmtjht 先拋答案,中建三局裝飾,現在叫中建深圳裝飾,...

中醫中的虛實錯雜中的虛中夾實和實中夾虛的區別是什麼。(請通俗易懂的說明)?

貓眼 虛中夾實和實中夾虛,分別代表的是這個病的本質是什麼。虛中夾實,本質上是虛證,但是很可能同時就夾著食積,痰溼,水飲,瘀血等實證。實中夾虛,本質是實證,比如實熱證,因為傷陰,往往都夾著陰虛的情況。 朵朵今天也要加油 其實我覺得125的教材寫的還挺清楚的 從我粗淺的理解 兩者的關聯是可以相互轉化 兩...