有個支援php的伺服器環境是必須的了
然後看我寫的**我們來一起研究ucenter的加密演算法。
研究過那麼一兩次的人都應該知道uc的資料庫裡你設定同樣的密碼註冊得到的md5加密都不一樣。
這個問題很簡單就是他的密碼是拼接了乙個隨機的字串$salt
那麼這個$salt是怎麼得到的呢!
這個$salt在uc_client\model\user.php
這個檔案中能找的到
那麼我先把他的**貼出來
line 103 : $salt = substr(uniqid(rand()), -6);
//這個就是$salt的演算法
/***我解釋一下這個會得到什麼rand --將
*產生乙個隨機數數的範圍在沒有限制的情況下是從0---32768
*uniqid()巨手冊的說法《本人英語不怎麼好,理解如下》
*根據當前時間返回乙個獨特的標識字首,
*我想應該是類似cookies的型別是隨機並且是唯一的。
*字首最多可是114個字串的長度。
*substr(uniqid(rand()), -6)就是把裡面產生的數擷取,
*擷取的方法就是從後向前數6個。從第6個開始向
*後保留。給個例子
*$rest = substr("abcdef", 1); // returns "bcdef"
*$rest = substr("abcdef", 3); // returns "bcd"
*$rest = substr("abcdef", 4); // returns "abcd"
*$rest = substr("abcdef", 8); // returns "abcdef"
*這樣$salt就得到了乙個6個字元的隨機數。
*這個隨機數就是$salt的值。
**/line 104 : $password = md5(md5($password).$salt);
//把從會員註冊提交的登錄檔單那獲取的$password
//進行一次md5然後和上面的$salt拼接到一起。
//拼接完在進行一次md5
line 107 : $this->db->query("insert into ".uc_dbtablepre."members set $sqladd username='$username', password='$password', email='$email', regip='".$this->base->onlineip."', regdate='".$this->base->time."', salt='$salt'");
//懂資料庫的這個應該一看就明白就是把獲取的$salt也寫進資料庫了。
line 114 : $data = $this->db->fetch_first("select username, uid, password, salt from ".uc_dbtablepre."members where username='$username'");
//查詢得到對應$username 的 $salt,
//然後同樣的演算法進行對比。
//如果為 "t" 登陸如果為 "f" 提示密碼錯誤.
現在用我寫的**進行$salt的測試大家看看
得到的是什麼。
每次重新整理就會得到不同的字元.
<?php
$salt = substr(uniqid(rand()), -6);
for($i=0; $i<5;$i++)
echo "
";print "獲取密碼設定使用者密碼為 a
";$pass = a;
$password = md5(md5($pass).$salt);
for($u=0;$u<5;$u++)
?>
複製**
Ucenter 密碼加密機制
因為疏忽 忘記了ucenter下的乙個應用的後台管理員登入名和密碼,google 了下ucenter的密碼加密機制,很犀利 如下 salt substr uniqid rand 6 生成隨機值 pass mypass 使用者密碼 password md5 md5 pass salt 兩次md5加密 ...
salt鹽度與使用者密碼加密機制
1 密碼必須雜湊儲存 內容略 2 加salt雜湊 我們知道,如果直接對密碼進行雜湊,那麼黑客 統稱那些有能力竊取使用者資料並企圖得到使用者密碼的人 可以對乙個已知密碼進行雜湊,然後通過對比雜湊值得到某使用者的密碼。換句話說,雖然黑客不能取得某特定使用者的密碼,但他可以知道使用特定密碼的使用者有哪些。...
密碼加SALT原理
原來這個技術叫salt,以前我們經常這麼用 我們知道,如果直接對密碼進行雜湊,那麼黑客可以對通過獲得這個密碼雜湊值,然後通過查雜湊值字典 例如md5密碼破解 得到某使用者的密碼。加salt可以一定程度上解決這一問題。所謂加salt方法,就是加點 佐料 其基本想法是這樣的 當使用者首次提供密碼時 通常...