就說原密碼加上乙個鹽值一起hash儲存起來的,當然不能說還儲存了明文,不然肯定會被噴。
解決的辦法是將密碼加密後再儲存進資料庫,比較常用的加密方法是使用雜湊函式(hash function)。雜湊函式的具體定義,大家可以在網上或者相關書籍中查閱到,簡單地說,它的特性如下:
(1)原始密碼經雜湊函式計算後得到乙個雜湊值
(2)改變原始密碼,雜湊函式計算出的雜湊值也會相應改變
(3) 同樣的密碼,雜湊值也是相同的
(4) 雜湊函式是單向、不可逆的。也就是說從雜湊值,你無法推算出原始的密碼是多少
有了雜湊函式,我們就可以將密碼的雜湊值儲存進資料庫。使用者登入**的時候,我們可以檢驗使用者輸入密碼的雜湊值是否與資料庫中的雜湊值相同。
三) 為密碼加鹽(salt)
從上面的查表法可以看出,即便是將原始密碼加密後的雜湊值儲存在資料庫中依然是不夠安全的。那麼有什麼好的辦法來解決這個問題呢?答案是加鹽。
鹽(salt)是什麼?就是乙個隨機生成的字串。我們將鹽與原始密碼連線(concat)在一起(放在前面或後面都可以),然後將concat後的字串加密。採用這種方式加密密碼,查表法就不靈了(因為鹽是隨機生成的)。
總結:單單使用雜湊函式來為密碼加密是不夠的,需要為密碼加鹽來提高安全性,鹽的長度不能過短,並且鹽的產生應該是隨機的。
資料庫儲存
sqlite資料庫儲存 android 系統竟然是內建了資料庫的,sqlite 是散輕量級的關係型資料庫,它的運算速度非常快,古用資源很少,通常只需要幾百kb的記憶體就足夠了,因而特別適合在移動裝置上用。sqlite不僅支援標準的sol語法,還遵循了資料庫acid事務,所以只要你以前使用過其他的關係...
MySQL忘記資料庫密碼,重置資料庫密碼
1 編輯mysql的配置檔案 my.ini 一般在mysql安裝目錄下有my.ini即mysql的配置檔案。在此配置檔案的最後新增如下一行 skip grant tables 儲存退出編輯。2 然後重啟mysql服務 在命令列下執行 net stop mysql net start mysql 3 ...
資料庫 MYSQL MySql資料庫使用者密碼的修改
環境 作業系統 win2003 mysql mysql ver 12.22 distrib 4.0.18,for win95 win98 i32 思想 為了安全加密需要設定mysql資料庫相關使用者的密碼 mysql資料庫的密碼都是儲存在mysql資料庫例項的user表中的password欄位裡,通...