SpringBoot 整合 Shiro 密碼加密

資料庫中密碼相關欄位都不是明文,肯定是加密之後的,傳統方式一般是使用MD5加密。

單純使用不加鹽的MD5加密方式,當兩個使用者的密碼相同時,會發現資料庫中存在相同內容的密碼,這樣也是不安全的。我們希望即便是兩個人的原始密碼一樣,加密後的結果也不一樣。

下面進行shiro密碼 加密加鹽配置:

1。ShiroConfig中新增密碼比較器

2。將密碼比較器配置給ShiroRealm

3。密碼比較器RetryLimitHashedCredentialsMatcher

自定義的密碼比較器,跟前面部落格中邏輯沒有變化,唯一變的是 繼承的類從 變為

RetryLimitHashedCredentialsMatcher完整內容如下:

4。修改ShiroRealm中doGetAuthenticationInfo方法

跟之前的 相比,唯一改變的了

這一行程式碼,添加了 加鹽引數。

5。下面是生成密碼加密加鹽的方法,可以在註冊的時候對明文進行加密 加鹽 入庫

可能出現的問題

可能會發生這種情況,測試發現密碼不對,具體原因debug都可以發現,這裡直接把結果發出來:

第一種:

debug發現 傳入的密碼 經過加密加鹽之後是對的,但是 從資料庫中 獲取的密碼 卻是明文,原因是在中 方法中,最後返回的 第二個引數 是密碼,這個密碼 不是從前臺傳過來的密碼,而是從資料庫中查詢出來的

第二種:

debug發現 傳入的密碼 經過加密加鹽之後是對的,但是 從資料庫中 獲取的密碼 卻是更長的一段密文,原因是在中配置的一個屬性:

預設是,如果改為,則會出現 對比的時候從資料庫拿出密碼,然後轉 變成了另外一個更長的字串,所以怎麼對比都是不透過的。

分享

&

在看

TAG: 密碼加密加鹽資料庫debug