注册 登录
编程论坛 PHP技术论坛

求高手帮忙,帮我反写个程序,谢谢

as4491 发布于 2015-02-09 19:03, 2239 次点击
<?
function sample($s)
{
$hexchars = '0123456789ABCDEF';
if ( !$s || strlen($s) <= 0 )
{
echo "null string.";
return "";
}
$len = strlen($s);
$ret = '';
$curc = 0;
    $nextc = ord(substr($s, 0, 1));
for ($i=1; $i<$len; $i++ )
{
$curc = $nextc;
$nextc = ord(substr($s, $i, 1));
$curc ^= $nextc;
//echo '<br> 0x'. substr($hexchars, ($curc & 0xF0) >> 4, 1) . substr($hexchars, $curc & 0x0F, 1);
$ret .= substr($hexchars, ($curc & 0xF0) >> 4, 1);
$ret .= substr($hexchars, $curc & 0x0F, 1);
}
$curc = $nextc ^ 0x7C;
$ret .= substr($hexchars, ($curc & 0xF0) >> 4, 1);
echo $ret;
echo "<br>";
$ret .= substr($hexchars, $curc & 0x0F, 1);
return $ret;
}
$a="srvaddr=127.0.0.1";
$b=sample($a);
echo $b;
function sample2($s)
{
    //现在就想写个程序,把这个$b给还原成$a,请高手帮忙写个
}
$c=sample2($b);
echo $c;


?>
1 回复
#2
asmdaydream2015-03-18 10:03
来得有点晚
程序代码:
function sample2($s) {
        function getOrd($encrypt='',$pos,$str='0123456789ABCDEF'){
            $firest_ord = strpos($str,$encrypt[$pos-1]);
            $before4 = $firest_ord << 4 & 0XF0;     
            $last_ord = strpos($str,$encrypt[$pos]);
            $last4 = $last_ord & 0x0F;              
            return $last4 | $before4;
        }
        $hexchars = '0123456789ABCDEF';
        $result = '';
        $length = strlen($s);
        $last_ord = getOrd($s, $length-1, $hexchars);

        $nextc = $last_ord ^ 0X7C;
        for($i=$length-3;$i>0;$i=$i-2)
        {
            $result .= chr($nextc);
            $curc  = getOrd($s, $i, $hexchars);
            $curc ^= $nextc;
            $nextc = $curc;
        }
        $result .= chr($nextc);
        return strrev($result);
    }
1