使用者密碼安全處理,主要是對密碼生成摘要,將摘要內容儲存到資料庫中。一般採用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語句如...