一般來說,實際專案中隱私資料沒有在網路上明文跑路,都會採用不同的加密演算法。shiro中的認證憑據通常也會採用演算法進行加密。
該介面只有乙個方法,docredentialsmatch,就是用來進行密碼比較的!
原始碼如下:
public inte***ce credentialsmatcher if the provided token credentials match the stored account credentials,
* otherwise.
** @param token the submitted during the authentication attempt
* @param info the stored in the system.
* @return if the provided token credentials match the stored account credentials,
* otherwise.
*/boolean docredentialsmatch(authenticationtoken token, authenticationinfo info);
}
其實現類如下:
裡面可以看到我們常用的md5演算法和sha-x演算法。
其中md5credentialsmatcher 和sha1credentialsmatcher 標註已經過時,通常我們會直接在容器中註冊hashedcredentialsmatcher來使用!
如這裡我們註冊hashedcredentialsmatcher並指定演算法為md5,xml配置如下:
使用中的配置情況下,如果兩個人的原始密碼一樣,那麼其加密後的密碼也相同,同樣存在風險。
在hashedcredentialsmatcher中有這樣乙個方法:
protected hash hashprovidedcredentials(object credentials, object salt, int ha****erations)
其中new ******hash(hashalgorithmname, credentials, salt, ha****erations)
就是根據提供的原始憑據,加密演算法,鹽值和加密次數進行加密並返回加密後的結果。鹽值是乙個唯一字串,這裡你可以使用loginname作為加密鹽值。
步驟如下:
如果使用鹽值加密,我們的dogetauthenticationinfo修改如下:
@override
protected authenticationinfo dogetauthenticationinfo(
authenticationtoken authenticationtoken) throws authenticationexception
if (user.getstatus()==null||user.getstatus()==0)
//其他異常...
//返回authenticationinfo的實現類******authenticationinfo
// return new ******authenticationinfo(user, user.getpassword(), this.getname());
//鹽值加密
bytesource credentialssalt = bytesource.util.bytes(loginname);
return new ******authenticationinfo(user, user.getpassword(), credentialssalt, this.getname());
}
Shiro 4 Shiro密碼加密
userrealm class cn.qecode.realm.userrealm name credentialsmatcher class org.apache.shiro.authc.credential.hashedcredentialsmatcher name hashalgorithmn...
Shiro 之一 密碼加密
在專案前期開發階段,密碼採用明碼儲存。但是一旦程式部署在生產環境,明碼儲存密碼是非常不安全的,必須對密碼進行加密運算。加密主要分為兩種 可逆運算和不可逆運算 1 可逆運算是通過乙個秘鑰,對一段字串加密,同樣可以通過這個秘鑰進行解密運算 2 不可逆運算的加密對一段字串進行加密,但是不能還原成原來的字串...
shiro認證2 md5密碼的比對(六)
1.為什麼使用 md5 鹽值加密 2.如何做到 1 在 dogetauthenticationinfo 方法返回值建立 authenticationinfo 物件的時候,需要使用 authenticationinfo principal,credentials,credentialssalt,rea...