shiro認證2 md5密碼的比對(六)

2021-08-14 17:10:16 字數 1869 閱讀 5279

1. 為什麼使用 md5 鹽值加密: 

2. 如何做到:

1). 在 dogetauthenticationinfo 方法返回值建立 ******authenticationinfo 物件的時候, 需要使用******authenticationinfo(principal, credentials, credentialssalt, realmname) 構造器

2). 使用 bytesource.util.bytes() 來計算鹽值. 

3).鹽值需要唯一: 一般使用隨機字串或 user id

4). 使用 new ******hash(hashalgorithmname, credentials, salt, ha****erations); 來計算鹽值加密後的密碼的值. 

1. 如何把乙個字串加密為 md5 

2. 替換當前 realm 的 credentialsmatcher 屬性. 直接使用 hashedcredentialsmatcher 物件, 並設定加密演算法即可. 

密碼的比對:

通過 authenticatingrealm 的 credentialsmatcher 屬性來進行的密碼的比對!

產生乙個md5加密後的密碼

public static void main(string args)

class="com.atguigu.shiro.realms.shirorealm">

class="org.apache.shiro.authc.credential.hashedcredentialsmatcher">

protected authenticationinfo dogetauthenticationinfo(

authenticationtoken token) throws authenticationexception

//5. 根據使用者資訊的情況, 決定是否需要丟擲其他的 authenticationexception 異常.

if("monster".equals(username))

//6. 根據使用者的情況, 來構建 authenticationinfo 物件並返回. 通常使用的實現類為: ******authenticationinfo

//以下資訊是從資料庫中獲取的.

//1). principal: 認證的實體資訊. 可以是 username, 也可以是資料表對應的使用者的實體類物件.

object principal = username;

//2). credentials: 密碼.

object credentials = null;

//"fc1709d0a95a6be30bc5926fdb7f22f4";

if("admin".equals(username))else if("user".equals(username))

//3). realmname: 當前 realm 物件的 name. 呼叫父類的 getname() 方法即可

string realmname = getname();

//4). 鹽值.

bytesource credentialssalt = bytesource.util.bytes(username);

******authenticationinfo info = null;

//new ******authenticationinfo(principal, credentials, realmname);

info = new ******authenticationinfo(principal, credentials, credentialssalt, realmname);

return info;

}

C 筆記(2)md5加密

class md5 md5 md5hash md5.create 將輸入字串轉換為位元組陣列並計算雜湊資料 byte data md5hash.computehash encoding.utf8.getbytes str 建立乙個 stringbuilder 來收集位元組並建立字串 stringbu...

Shiro密碼的MD5加密 MD5鹽值加密

用md5加密演算法後,前台使用者輸入的字串如何使用md5加密,需要做的是將當前的realm 的credentialsmatcher屬性,替換為md5credentialsmatcher 由於md5credentialsmatcher已經過期了,推薦使用hashedcredentialsmatcher...

Shiro 認證憑據 密碼 加密的那些事

一般來說,實際專案中隱私資料沒有在網路上明文跑路,都會採用不同的加密演算法。shiro中的認證憑據通常也會採用演算法進行加密。該介面只有乙個方法,docredentialsmatch,就是用來進行密碼比較的!原始碼如下 public inte ce credentialsmatcher if the...