"userrealm"
class
="cn.qecode.realm.userrealm"
>
name
="credentialsmatcher"
>
class
="org.apache.shiro.authc.credential.hashedcredentialsmatcher"
>
name
="hashalgorithmname"
value
="md5"
>
property
>
name
="ha****erations"
value
="2"
>
property
>
bean
>
property
>
bean
>
這裡配置了credentialsmatcher,那麼userrealm在對密碼進行匹配時,會先對使用者輸入的密碼進行兩次的md5加密,再與資料庫中的密碼匹配.
一般情況下,我們不會直接對密碼進行md5加密,畢竟有的人會把密碼設得極為簡單,比如123,111之類,而這類密碼就算是用md5加密後,還是很容易就會被破解的,所以我們在加密的時候會加上鹽值.
鹽值:其實就是乙個字串,一般是乙個使用者特有的屬性,如email.
加鹽:在加密的時候,不是對密碼進行加密,而是對密碼+鹽值進行加密.
//用郵箱作為鹽值
bytesource credentialssalt = bytesource.util.
bytes
(user.
getemail()
);******authenticationinfo info =
new******authenticationinfo
(user,user.
getpassword()
,getname()
);info.
setcredentialssalt
(credentialssalt)
;
這樣shiro在驗證的時候就會對密碼加鹽,然後進行兩次md5加密,再與資料庫中的密碼進行匹配.
注意
當然,因為我們在驗證的時候使用了md5加密,所以我們在新增密碼到資料庫的時候,也要對密碼進行加密.而且當使用者的email改變的時候,記得也要重新修改密碼.
string password =
newmd5hash
(password,email,2)
.tostring()
;
Shiro 之一 密碼加密
在專案前期開發階段,密碼採用明碼儲存。但是一旦程式部署在生產環境,明碼儲存密碼是非常不安全的,必須對密碼進行加密運算。加密主要分為兩種 可逆運算和不可逆運算 1 可逆運算是通過乙個秘鑰,對一段字串加密,同樣可以通過這個秘鑰進行解密運算 2 不可逆運算的加密對一段字串進行加密,但是不能還原成原來的字串...
Shiro學習筆記之Shiro加密
雜湊演算法一般用於生成資料的摘要資訊,是一種不可逆的演算法,一般適合儲存密碼之類的資料,常見的雜湊演算法如 md5 sha 等。一般進行雜湊時最好提供乙個 雜訊,這樣可以使破解密碼的難度變大。以下是md5加密演算法的乙個演示 public class tes 5 此介面提供加密密碼和驗證密碼的功能。...
shiro使用者加密預設方式 shiro加密演算法
第一節的時候我介紹過,shiro有很多加密演算法,如md5和sha,而且還支援加鹽,使得密碼的解析變得更有難度,更好的保障了資料的安全性。這裡我們要介紹的是md5演算法,因為比較常用。首先我們來看看md5演算法的各種實現方式 packagecom.wujianwu.test importorg.ap...