第一節的時候我介紹過,shiro有很多加密演算法,如md5和sha,而且還支援加鹽,使得密碼的解析變得更有難度,更好的保障了資料的安全性。
這裡我們要介紹的是md5演算法,因為比較常用。首先我們來看看md5演算法的各種實現方式:
packagecom.wujianwu.test;importorg.apache.shiro.crypto.hash.md5hash;importorg.apache.shiro.crypto.hash.******hash;public classtes***5 publicdatasource getdatasource() public voidsetdatasource(datasource datasource) /*** 根據使用者名稱從資料庫查詢出使用者資訊
*@paramusername
*@return
privateuser getuserinfo(string username)catch(sqlexception e) finallyreturnuser;
}/*** 關閉資源
*@paramconn
*@paramset
*@paramstatement*/
private voidcloseall(connection conn,resultset set,preparedstatement statement) if(statement != null) if(conn != null) catch(sqlexception e) catch(authenticationexception e) , factoryclasslocation -> null, forceignoreunresolvedtransactions -> false, forcesynchronouscheckins -> false, forceusenameddriverclass -> false, identitytoken -> 2zm2h7a4fnv3mn329o49|180bc464, idleconnectiontestperiod -> 0, initialpoolsize -> 3, jdbcurl -> jdbc:mysql://localhost:3306/test, maxadministrativetasktime -> 0, maxconnectionage -> 0, maxidletime -> 0, maxidletimeexcessconnections -> 0, maxpoolsize -> 15, maxstatements -> 0, maxstatementsperconnection -> 0, minpoolsize -> 3, numhelperthreads -> 3, preferredtestquery -> null, privilegespawnedthreads -> false, properties -> , propertycycle -> 0, statementcachenumdeferredclosethreads -> 0, testconnectiononcheckin -> false, testconnectiononcheckout -> false, unreturnedconnectiontimeout -> 0, useroverrides -> {}, usestraditionalreflectiveproxies -> false ]
使用者加密後的密碼3d80e8a34ae898c07d3fb237bae26b7d**********====
2019-07-28 19:59:31,399 info [org.apache.shiro.session.mgt.abstractvalidatingsessionmanager] -enabling session validation scheduler...2019-07-28 19:59:31,405 info [com.wujianwu.test.testmyrealm] - 使用者登入認證成功
可以看到,我們模擬的使用者輸入的賬號是zhangsan,密碼是123456,但資料庫中的密碼是加密加鹽後的密碼,所以我們給realm配置了加密演算法的規則,讓它將我們傳過去的密碼進行了同樣的加密加鹽(這裡鹽不需要我們設定,是從資料庫中查詢出來的),然後再和資料庫的資料進行比對認證,因此這裡認證是成功的(123456進行md5加密和wjw加鹽後然後再雜湊2次就是這一串東西了:3d80e8a34ae898c07d3fb237bae26b7d,至於內部如何實現,有興趣的大佬可以去看一下《演算法》這本書= =)
jboss eap 6 資料庫使用者加密訪問
1 開啟jboss的standalone.xml,檢視使用者名稱和密碼。jdbc postgresql org.postgresql.driver postgres postgres welcome1 false false false welcome1 postgresdsrealm postgr...
Linux中檢視使用者密碼(加密方式)
我們知道linux是乙個多使用者的作業系統,也就是說在linux系統中儲存著很多不同使用者的使用者名稱及密碼。那麼如果某乙個使用者的密碼忘記了怎麼辦?首先我們得知道,在linux系統中,使用者名稱被存放在了 etc passwd這個檔案中 密碼存放在 etc shadow中。知道這兩條重要的資訊,那...
常見的使用者密碼加密方式以及破解方法
要完全防止資訊洩露是非常困難的事情,除了防止黑客外,還要防止內部人員洩密。但如果採用合適的演算法去加密使用者密碼,即使資訊洩露出去,黑客也無法還原出原始的密碼 或者還原的代價非常大 也就是說我們可以將工作重點從防止洩露轉換到防止黑客還原出資料。作為網際網路公司的資訊保安從業人員經常要處理撞庫掃號事件...