首页
社区
课程
招聘
[求助]一个php算法求逆
发表于: 2012-11-11 20:37 4422

[求助]一个php算法求逆

2012-11-11 20:37
4422
这个主站判断代码:
foreach($_GET as $key => $value) {
        $get[$key] = filter($value); //get variables are filtered.
}

if ($_POST['doLogin']=='Login')
{

foreach($_POST as $key => $value) {
        $data[$key] = filter($value); // post variables are filtered
}

$user_email = $data['usr_email'];
$pass = $data['pwd'];

if (strpos($user_email,'@') === false) {
    $user_cond = "user_name='$user_email'";
} else {
      $user_cond = "user_email='$user_email'";
   
}

       
$result = mysql_query("SELECT `id`,`pwd`,`full_name`,`approved`,`user_level` FROM users WHERE
           $user_cond
                        AND `banned` = '0'
                        ") or die (mysql_error());
$num = mysql_num_rows($result);

  // Match row found with more than 1 results  - the user is authenticated.
    if ( $num > 0 ) {
       
        list($id,$pwd,$full_name,$approved,$user_level) = mysql_fetch_row($result);
       
        if(!$approved) {
        //$msg = urlencode("Account not activated. Please check your email for activation code");
        $err[] = "Account not activated. Please check your email for activation code";
       
        //header("Location: login.php?msg=$msg");
         //exit();
         }
         
                //check against salt
        if ($pwd === PwdHash($pass,substr($pwd,0,9))) {
为了清晰其间,我把输入部分也贴出来了,关键看最后一行代码,然后我在贴出关键函数PwdHash代码.
function PwdHash($pwd, $salt = null)
{
    if ($salt === null)     {
        $salt = substr(md5(uniqid(rand(), true)), 0, 9);
    }
    else     {
        $salt = substr($salt, 0, 9);
    }
    return $salt . sha1($pwd . $salt);
}

这是从数据库中取出来的值:be66daf0a2cf81179741bb67289861edcfca0abc3c040e4d1

请问怎么来逆这个函数。

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 1847
活跃值: (1811)
能力值: ( LV12,RANK:230 )
在线值:
发帖
回帖
粉丝
2
哈希算法,不可逆
2012-11-11 21:00
0
雪    币: 239
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
请问,能不能把把这个49位的加密串还原,或者说还原成sha1然后在cmd5.com上破解那?
2012-11-11 21:22
0
雪    币: 1847
活跃值: (1811)
能力值: ( LV12,RANK:230 )
在线值:
发帖
回帖
粉丝
4
前面9位是一个唯一值的md5的前面9位。(从数据库中可以取出)

后面40位是  sha1( 密码+刚才那个9位 )
2012-11-11 22:23
0
雪    币: 1847
活跃值: (1811)
能力值: ( LV12,RANK:230 )
在线值:
发帖
回帖
粉丝
5
也就是

sha1( 密码+be66daf0a)
=
2cf81179741bb67289861edcfca0abc3c040e4d1
2012-11-11 22:28
0
雪    币: 239
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
谢谢了,起初的时候,我也是这么弄得,不过没在cmd5上破出来,我想我给弄错了,你这么一说,看来我没弄错。

谢谢大牛了
2012-11-12 08:32
0
游客
登录 | 注册 方可回帖
返回
//