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

[求助]一个php算法求逆

2012-11-11 20:37
4060
这个主站判断代码:
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

请问怎么来逆这个函数。

[培训]内核驱动高级班,冲击BAT一流互联网大厂工 作,每周日13:00-18:00直播授课

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

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

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

谢谢大牛了
游客
登录 | 注册 方可回帖
返回