2012-02-03 250 views
-1

我有一個登記表進行登記的用戶和密碼加密後的比較散列密碼

$password=crypt($_POST['password']); 

然後我這個存儲直衝沒有做別的數據庫;

然而,在登錄表單,當我嘗試比較提交的密碼存儲在數據庫中的加密的密碼如下,

$error = array(); 
$password=""; 
$name=""; 
if (empty($_POST['name'])) 
{ 
    //if the email supplied is empty 
    $error[] = 'You forgot to enter your username'; 
} 
else 
{ 
    $name=$_POST['name']; 
} 

if (empty($_POST['password'])) 
{ 
    $error[] = 'Please Enter Your Password '; 
} 
else 
{ 
    $password =crypt($_POST['password']); 
} 

if (empty($error)) 
{ 

    $query="SELECT * FROM mytable WHERE (name='$name' AND pass='$password') AND Activation IS NULL"; 
    $result=mysql_query($query); 
    if(!$result){} 
    else 
    { 
     $numRow=mysql_num_rows($result); 
     if ($numRow != 0) 
     { 

     } 
     else 
     { 
      echo "Incorrect password or unactivated account"; 
     } 
    } 
} 

我已經得到了錯誤信息。

+0

什麼樣的錯誤? – 2012-02-03 03:23:46

+0

假設你的意思是「有錯誤信息」是「//錯誤信息msg在這裏被調用」的部分,這只是表示你的查詢沒有找到任何東西,這意味着你不是在尋找正確的東西,或者在那裏在'激活'爲空的數據庫中沒有名稱/密碼。 – 2012-02-03 03:24:48

+0

謝謝,我編輯我的OP來更好地解決問題。 – user1151711 2012-02-03 03:31:11

回答

1

顯示加密密碼的示例。從If no salt is provided, PHP will auto-generate either a standard two character (DES) salt, or a twelve character (MD5), depending on the availability of MD5 crypt().

你必須提供「鹽」爲了加密明文口令和你曾經之前,你存儲在DB來獲得相同的字符串可能出現的問題。

如果您的密碼是由DES加密的,那麼'salt'是加密密碼的前兩個字母。如果通過MD5加密(加密密碼的前3個符號將爲$1$),那麼'鹽'就是最後一個$符號的所有內容。

使用http://www.php.net/md5通過MD5算法對密碼進行直接散列。結果在字符串的開頭不會有$1$,並且不會依賴於任何「鹽」。但典型的建議是添加一些簡單的密碼(附加/預先固定一些固定的字符串)或反轉(改變密碼中的字母順序)。 MD5散列對於用作密碼標準的非修飾的詞語可以通過函數crypt產生所謂rainbow tables

實施例中找到..

標準DES:rl.3StKT.4T8M < - 「鹽」是rl

MD5:1 $ $ $ rasmusle rISCgZzpwk3UhDidwXvin0 < - '鹽' 是代碼的$1$rasmusle$

實施例:

echo crypt('password'); 
// outputs for every run are 
// $1$7M..C...$jQqGlQDmVfEJxd4iCJV.E/ 
// $1$jc5.wU..$8WgdKMca.kq82JrdXGoSF. 
// and so on 
// but ! 
echo crypt('password', '$1$7M..C...$'); 
// outputs 
// $1$7M..C...$jQqGlQDmVfEJxd4iCJV.E/ 
// and 
echo crypt('password', '$1$jc5.wU..$'); 
// outputs 
// $1$jc5.wU..$8WgdKMca.kq82JrdXGoSF. 
+0

謝謝,我在「地穴」的地方全部使用「md5」,它現在可以工作。 – user1151711 2012-02-03 03:50:07

+0

@ user1151711閱讀關於md5和彩虹表的筆記。 – Cheery 2012-02-03 03:53:09