近日,csdn密碼被洩漏事件,確實不該,大網際網路企業,做法欠妥,也沒有給使用者乙個很好的交代。大家都在說為什麼沒有給密碼加點鹽,salt雜湊。
我們知道,如果直接對密碼進行雜湊,那麼黑客(統稱那些有能力竊取使用者資料並企圖得到使用者密碼的人)可以對乙個已知密碼進行雜湊,然後通過對比雜湊值得到某使用者的密碼。換句話說,雖然黑客不能取得某特定使用者的密碼,但他可以知道使用特定密碼的使用者有哪些。
加 salt可以一定程度上解決這一問題。所謂加salt,就是加點「佐料」。其基本想法是這樣的——當使用者首次提供密碼時(通常是註冊時),由系統自動往這 個密碼裡撒一些「佐料」,然後再雜湊。而當使用者登入時,系統為使用者提供的**撒上同樣的「佐料」,然後雜湊,再比較雜湊值,已確定密碼是否正確。
這 裡的「佐料」被稱作「salt值」,這個值是由系統隨機生成的,並且只有系統知道。這樣,即便兩個使用者使用了同乙個密碼,由於系統為它們生成的salt值 不同,他們的雜湊值也是不同的。即便黑客可以通過自己的密碼和自己生成的雜湊值來找具有特定密碼的使用者,但這個機率太小了(密碼和salt值都得和黑客使 用的一樣才行)。
下面詳細介紹一下加salt雜湊的過程。介紹之前先強調一點,前面說過,驗證密碼時要使用和最初雜湊密碼時使用「相同的」佐料。所以salt值是要存放在資料庫裡的。
[img]
圖1. 使用者註冊
如圖1所示,註冊時,
1)使用者提供密碼(以及其他使用者資訊);
2)系統為使用者生成salt值;
3)系統將salt值和使用者密碼連線到一起;
4)對連線後的值進行雜湊,得到hash值;
5)將hash值和salt值分別放到資料庫中。
圖2. 使用者登入
[img]
如圖2所示,登入時,
1)使用者提供使用者名稱和密碼;
2)系統通過使用者名稱找到與之對應的hash值和salt值;
3)系統將salt值和使用者提供的密碼連線到一起;
4)對連線後的值進行雜湊,得到hash'(注意有個「撇」);
5)比較hash和hash'是否相等,相等則表示密碼正確,否則表示密碼錯誤。[/code]
linux使用者密碼機制
linux下修改使用者密碼可以執行 passwd admin,該命令位與 usr bin下。中實現該過程,可以通過呼叫 echo newpassword passwd admin stdin 來實現,當然新密碼可以模擬個input confirm的過程讓使用者輸入。linux密碼加密演算法不可逆,相...
oracle密碼機制以及常用操作
oracle 預設有3個使用者 sys 密碼 自定 system 密碼 自定 scott 密碼 tiger 預設鎖定 注 用sys使用者登入鬚根 as sysdba desc 表名 檢視表結構 dos啟動監聽 lsnrctl start dos啟動oracle例項服務 oradim starup s...
salt鹽度與使用者密碼加密機制
1 密碼必須雜湊儲存 內容略 2 加salt雜湊 我們知道,如果直接對密碼進行雜湊,那麼黑客 統稱那些有能力竊取使用者資料並企圖得到使用者密碼的人 可以對乙個已知密碼進行雜湊,然後通過對比雜湊值得到某使用者的密碼。換句話說,雖然黑客不能取得某特定使用者的密碼,但他可以知道使用特定密碼的使用者有哪些。...