一路问情个人家园一路问情游戏攻略一路问情综合信息查询一路问情软件游戏外挂下载一路问情高清在线一路问情d21.09暗黑战网关于一路问情团队
打印

帮我 逆转一下加密过程 (申请版主赐教^O^)

帮我 逆转一下加密过程 (申请版主赐教^O^)

搞了一批加密密码,对php一点都不懂,希望高手帮我逆转一下。
这是加密的过程
<?
function checkpass($pass,$crypted)
{
    if ($crypted[0] == '{')
    {
        for ($i=1;$i<(strlen($crypted)-1);$i++)
        {
            if ($crypted[$i] == '}')
                break;
            $scheme[$i-1] = $crypted[$i];
        }
        if ($crypted[$i] != '}')
            return -1;

        $i++;
        for($j=0;$i<strlen($crypted);$i++,$j++)
        {
            $cryptpass[$j]=$crypted[$i];
        }

        $scheme = join("",$scheme);
        $cryptpass = join("",$cryptpass);
    }
    else
    {
        $scheme = "";
        $cryptpass = $crypted;
    }
    $scheme = strtolower($scheme);
    if ($scheme == "md5")
    {
        if ($cryptpass != crypt($pass,$cryptpass))
        {
            if ($cryptpass != ldap_md5($pass))
                return -1;
            else
                return 0;
        }
        else
            return 0;
    }
    else if ($scheme == "des")
    {
        if ($cryptpass != crypt($pass,$cryptpass))
            return -1;
        else
            return 0;
    }
    else if ($scheme == "crypt")
    {
        if ($cryptpass != crypt($pass,$cryptpass))
            return -1;
        else
            return 0;
    }
    else if ($scheme == "sha")
    {
        if ($cryptpass != shapass($pass))
            return -1;
        else
            return 0;
    }
    else if ($scheme == "password") {
        if ($cryptpass != mysql_password($pass)){
            return -1;
        }
        else
            return 0;
    }
    else if ($scheme == "clear"||$scheme == "") {
        if ($cryptpass != $pass)
            return -1;
        else
            return 0;
    }
    //其他的加密方式应该放在这里
    else
    {
        if ($cryptpass != crypt($pass,$cryptpass))
        {
            if ($cryptpass != ldap_md5($pass))
                return -1;
            else
                return 0;
        }
        else
            return 0;
    }
}

function mysql_password($password)
{
    $nr = 1345345333;
    $add = 7;
    $nr2 = 0x12345671;
    for ($i=0; $i<strlen($password); $i++) {
        if ($password[$i] == ' ' || $password[$i] == '\t')
            continue;
        $tmp = ord($password[$i]);
        $nr ^= (($nr & 63)+$add)*$tmp + ($nr << 8);
        $nr2 += ($nr2 << 8) ^ $nr;
        $add += $tmp;
    }
    $h1 = $nr & (1<<31) - 1;
    $h2 = $nr2 & (1<<31) - 1;

    return sprintf("%08lx%08lx", $h1, $h2);
}

function contextto64md5($string)
{
    $string = $string."0000";
  
    $len=strlen($string);
    if($len != 36){
        return false;
    }
    $ito64= "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
    $i=0;
    $s="1234567890123456789012";

    $len=0;
    while($len<36)
    {
        $t="************";
        for($j=0;$j<6;$j++)
            $t[$j]=$string[$len+$j];

        $t = hexdec($t);

        $p[2]=$t & 0xff;
        $p[1]=($t >> 8) & 0xff;
        $p[0]=($t >> 16) & 0xff;

        $s[$i++]=$ito64[$p[0] >> 2];
        $s[$i++]=$ito64[(($p[0] & 0x3)<<4) |(($p[1] & 0xf0)>>4)];
        $s[$i++]=$ito64[(($p[1] & 0xf)<<2) |(($p[2] & 0xc0)>>6)];
        $s[$i++]=$ito64[($p[2] & 0x3f)];
        $len+=6;

    }
    $s[$i--];
    $s[$i--]='=';
    $s[$i--]='=';
    return $s;
}

function contextto64sha($string)
{
    $string = $string."00";
  
    $len=strlen($string);
    if($len != 42){
        return false;
    }
    $ito64= "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
    $i=0;
    $s="1234567890123456789012";

    $len=0;
    while($len<42)
    {
        $t="************";
        for($j=0;$j<6;$j++)
            $t[$j]=$string[$len+$j];

        $t = hexdec($t);

        $p[2]=$t & 0xff;
        $p[1]=($t >> 8) & 0xff;
        $p[0]=($t >> 16) & 0xff;

        $s[$i++]=$ito64[$p[0] >> 2];
        $s[$i++]=$ito64[(($p[0] & 0x3)<<4) |(($p[1] & 0xf0)>>4)];
        $s[$i++]=$ito64[(($p[1] & 0xf)<<2) |(($p[2] & 0xc0)>>6)];
        $s[$i++]=$ito64[($p[2] & 0x3f)];
        $len+=6;

    }
    $s[$i--];
    $s[$i--]='=';
    return $s;
}

function shapass($pass)
{
    $sha = new SHA;
    $hasharray = $sha->hash_string($pass);
    $hash = $sha->hash_to_string($hasharray);
    return contextto64sha($hash);
}

function ldap_md5($pass)
{
    $hash = md5($pass);
    $md5ed = contextto64md5($hash);
    return $md5ed;
}

function eyou_crypt($pass)
{
    $temp = strtolower($pass);

    if ($temp == strstr($temp,"{md5}"))
        return $pass;
    else if ($temp == strstr($temp,"{crypt}"))
        return $pass;
    else if ($temp == strstr($temp,"{des}"))
        return $pass;
    else if ($temp == strstr($temp,"{sha}"))
        return $pass;
    else if ($temp == strstr($temp,"{password}"))
            return $pass;
    $mysql_hd = eyousql_open();
    $result   = eyousql_query("select conf_value from e_system_config where conf_name='password-hash'", $mysql_hd);
    $row      = eyousql_fetch_array($result);
    if ( null == $row || "md5" == strtolower($row[0]))
        return "{md5}".ldap_md5($pass);
    else if ("sha" == strtolower($row[0]))
        return "{sha}".shapass($pass);
    else if ("des" == strtolower($row[0]))
        return "{des}".crypt($pass);
    else if ("crypt" == strtolower($row[0]))
        return "{crypt}".crypt($pass);
    else if ("password" == strtolower($row[0]))
        return "{password}".mysql_password($pass);
    else if ("clear" == strtolower($row[0]))
        return "{clear}".$pass;
    else
        return "{md5}".ldap_md5($pass);
      

}
?>


这是加密后的秘密:4FfzweA+VgIHIHXKEtQkVQ==@
把还原的方案写一下吧

TOP

偶也不会PHP```

TOP