java使用者密碼摘要加鹽的兩種方式

2021-07-04 13:19:08 字數 837 閱讀 2855

使用者密碼安全處理,主要是對密碼生成摘要,將摘要內容儲存到資料庫中。一般採用md5或者sha生成摘要,這種方式具有方便、快速而且幾乎不可還原性。

但是對相同資料返回的摘要資訊永遠是一樣的。如果某人有db的許可權,只要查詢摘要跟已知密碼摘要相同的使用者,就可以破解使用者的密碼,這對乙個專案來說十分危險。

通過加鹽技術,可以避免這種問題。有兩種加鹽方式:

1、通過使用者名稱+使用者密碼生成加密摘要,因為使用者名稱不會重複,所以生成的摘要也不會相同,使用者名稱相當於鹽。

2、隨機生成固定長度的字串,稱之為鹽,儲存到資料庫使用者表的字段中,通過鹽+密碼生成加密摘要,這樣資料庫中摘要也不會相同。

使用messagedigest生成sha摘要例子:

/**

* 生成鹽

* @return

*/public static byte createsalt() catch (nosuchalgorithmexception e)

}/**

* 生成摘要

* @param password

* @param salt

* @return

*/public static byte digest(string password, byte salt)

byte digest = msgdigest.digest(password.getbytes());

return digest;

} catch (nosuchalgorithmexception e)

}public static string createcredential(string password)

使用MySql,重置root使用者密碼的兩種方法

方法一 修改my.ini重啟服務的方法 在my.ini的 mysqld 字段加入 skip grant tables 重啟mysql服務,這時的mysql不需要密碼即可登入資料庫 然後進入mysql mysql use mysql mysql 更新 update user set password ...

java的兩種異常

一般分為checked異常和runtime異常,所有runtimeexception類及其子類的例項被稱為runtime異常,不屬於該範疇的異常則被稱為checkedexception。受檢查異常表示程式可以處理的異常。如果丟擲異常的方法本身不處理或者不能處理它,那麼方法的呼叫者就必須去處理該異常,...

java分頁的兩種方式

方式其實都非常的簡單,一種是資料庫分頁用limit限制取出條數,一種是在業務邏輯裡面分頁,我用的是jdbc,所以每次游標指定到一定的條數進行展示。因為只是簡單的進行原理學習,所以並沒有對 方面對嚴格的書寫,明白原理就好。主要的地方就是在進行資料庫查詢的時候,假設有一張表flownode,sql語句如...