康盛的系列產品,包括discuz、uchome、supesite都整合了同乙個使用者系統——ucenter,使用者登入的密碼也儲存在 ucenter中,對於其他系統整合或匯出資料到ucenter系統,通常會遇到密碼生成的問題,這裡就討論一下ucenter的使用者密碼演算法規則和生成方法。
密碼通常使用md5對使用者密碼hash 後儲存在資料庫中的方法,如果黑客拿到了這個hash數值,那麼可以採用字典的方式暴力破解,如果這個字典資料庫足夠大,並且字典比較符合人們的設定習慣的話,那很容易就能破解常見的密碼,因此ucenter採用了salt來防止這種暴力破解,salt是一隨機字串,它與口令連線在一起,再用單向函式對其運算,然後將salt值各單向函式運算的結果存入資料庫中。如果可能的salt值的數目足夠大的話,它實際上就消除了對常用口令採用的字典式攻擊,因為黑客不可能在資料庫中儲存那麼多salt和使用者密碼組合後的hash值。
ucenter的創始人密碼是儲存在檔案中的,開啟uc下面 /data/config.inc.php檔案,裡面的uc_founderpw儲存的就是密碼,而uc_foundersalt儲存的是salt數值,創始人密碼的建立規則是:uc_founderpw=md5(md5(password).uc_foundersalt),就是先將密碼md5,然後新增salt,然後再次md5,產生的hash數值儲存在config.inc.php檔案中,因此修改uc_founderpw裡面的數值就可以修改 ucenter的創始人密碼。
ucenter的使用者資訊是儲存在uc_members表中,在這個表中,每個使用者都有乙個不同的隨機 salt欄位,表中的password欄位為計算後的密碼,密碼計算規則是$password=md5(md5($password).$salt),也就是將使用者的密碼md5後,新增salt,然後再md5,儲存在password欄位中。
因此,如果進行不同系統的資料轉換,可以根據這個原理,將其他系統的使用者名稱和密碼計算後,匯入ucenter的uc_members表中,實現使用者的遷移。例如,如果原有系統使用的是 md5(password)這樣的演算法儲存密碼,那就通過程式隨機生成salt,然後計算兩者累加後的md5,這樣就很容易計算出這個使用者在 ucenter中的使用者密碼hash值,從而實現使用者的無縫遷移。
不過,如果原有系統使用的是md5(password+salt)的方式儲存的密碼,那就無法實現密碼的平滑遷移ucenter了,即使遷移,也只能人為將其ucenter的password增加乙個salt才能使用,因此,我們在平時設計系統使用者密碼的時候,應該盡量採用md5(md5(password)+salt)的方式儲存密碼,這樣才能方便的實現和ucenter的介面,並且保證了安全性,通常對於英文使用者名稱來說,自建系統使用username來做salt是個簡便的方法。
利用WordPress使用者密碼演算法規則修改使用者密碼
wordpress使用者密碼儲存在wp users資料表的user pass欄位,密碼是通過portable php password hashing framework類產生的,密碼的形式是隨機且不可逆,同乙個明文的密碼在不同時間,產生的密文也不一樣,相對來說較為安全。wordpress使用者密碼...
if測試和語法規則
if語句是選取要執行的操作,這是python中主要的選擇工具,代表python程式所擁有的大多數邏輯。if語句的一般形式如下 if elif else if語句基本構成 if 條件 if語句塊 else else語句if語句用於比較運算中結合邏輯運算子 a 50 if a 100 and a 10 ...
if測試和語法規則
python條件語句是通過一條或多條語句的執行結果 true或者false 來決定執行的 塊。可以通過下圖來簡單了解條件語句的執行過程 python中if語句的一般形式如下所示 if condition 1 statement block 1 elif condition 2 statement b...