2012-02-03 150 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