亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

使用了 HashedCredentialsMatcher 后密碼并沒有加密?

不太清楚有沒有碰到密碼沒有真正加密的問題...吾輩在 CustomRealm 中對傳進來的密碼進行了斷點查看發現并沒有加密(還是明文), 老師的課程中沒有對比密碼, 不知道會不會有沒有問題呢? (」゜ロ゜)」

https://img1.sycdn.imooc.com//5ae277a7000165c407760315.jpg

查看傳入的 token 的值

https://img1.sycdn.imooc.com//5ae277ea0001eba114650259.jpg

正在回答

4 回答

同學你好,你配置的只是shiro驗證的加密規則,在你保存的時候并沒有去加密,所以數據庫里的密碼還是明文,你在保存的方法那里設置一下加密算法名字,加密次數,鹽值即可。例子如下:

public?void?insert(User?user1)?{
??//對用戶密碼進行加鹽處理
??String?salt?=?RandomStringUtils.randomAlphabetic(20);
??user.setPassword(new?SimpleHash("MD5",user1.getPassword(),salt,20).toHex());
??user1.setPassword(new?Sha256Hash(user1.getPassword(),salt,20).toHex());
??user1.setSalt(salt);
??this.save(user1);
}


0 回復 有任何疑惑可以回復我~

你看的密碼沒有加密是正確的,

HashedCredentialsMatcher中的
public?boolean?doCredentialsMatch(AuthenticationToken?token,?AuthenticationInfo?info)?{
????Object?tokenHashedCredentials?=?hashProvidedCredentials(token,?info);
????Object?accountCredentials?=?getCredentials(info);
????return?equals(tokenHashedCredentials,?accountCredentials);
}
方法會對傳過來的明文密碼按照HashedCredentialsMatcher對象的設置進行加密,然后與數據庫里面的加密密碼進行比對的


0 回復 有任何疑惑可以回復我~

我也是。。。。。。。沒有跟視頻里一樣,根本沒散列。。

0 回復 有任何疑惑可以回復我~

你的自定義realm的doGetAuthenticationInfo少了一行代碼,?指定salt鹽值。

如下:

SimpleAuthenticationInfo?saf?=?new?SimpleAuthenticationInfo(username,?user.getPassword(),?this.getName());
saf.setCredentialsSalt(ByteSource.Util.bytes(SALT));
return?saf;
0 回復 有任何疑惑可以回復我~
#1

hodge

沒有+鹽值導致的? 開始在設置realm的時候指定鹽值(獲取到的鹽值)放進去并返回是不是就不用你現在寫的這一步?
2019-09-24 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

使用了 HashedCredentialsMatcher 后密碼并沒有加密?

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號