我说的是样式哦,可不是破解。废话不多说的,我用的是16进制,yahoo的是10进制(貌似):
感谢这位朋友:http://www.phpx.com/happy/viewth ... =page%3D1#pid947632 他给了我借鉴的思路
<?php
function len($str)
{
return function_exists('mb_strlen') ? mb_strlen($str) : strlen($str);
}
function mykey($str,$key,$type=0)
{
$out = '';
$kc = md5($key);
$nk = array();
$klen = len($kc);
for($j=0;$j<$klen;$j++)
{
$nk[$j] = hexdec(substr($kc,$j,1));
}
$k=0;
switch($type)
{
case 0: //加密
$slen = len($str);
for($i=0;$i<$slen;$i++)
{
$out .= dechex(ord($str{$i})+$nk[$k]).'.';
$k = ($k=32) ? 0 : $k++;
}
$out = substr($out,0,-1);
break;
case 1: //解密
$str = explode('.',$str);
$slen = count($str);
for($i=0;$i<$slen;$i++)
{
if(!$str[$i]) continue;
$out .= chr(hexdec($str[$i])-$nk[$k]);
$k = ($k=32) ? 0 : $k++;
}
break;
}
return $out;
}
?>
测试:
<?php
$key = '====Test Key! 测试秘史====这边随便填=====爱填啥填啥';
$str = 'http://www.phpx.com/happy/viewthread.php?tid=138779&pid=947632&page=1&extra=page%3D1#pid947632 ==>加个中文测试看看!再来变态符号!@#$%^&*()_+~=-":|?><《》?+——)(*&……%¥#@!~';
echo '<xmp>'.$estr = mykey($str,$key);
echo "rnrn";
echo mykey($estr,$key,1).'</xmp>';
?>
结果:
QUOTE:
<xmp>77.83.83.7f.49.3e.3e.86.86.86.3d.7f.77.7f.87.3d.72.7e.7c.3e.77.70.7f.7f.88.3e.85.78.74.86.83.77.81.74.70.73.3d.7f.77.7f.4e.83.78.73.4c.40.42.47.46.46.48.35.7f.78.73.4c.48.43.46.45.42.41.35.7f.70.76.74.4c.40.35.74.87.83.81.70.4c.7f.70.76.74.34.42.53.40.32.7f.78.73.48.43.46.45.42.41.2f.4c.4c.4d.cb.e2.c7.105.e5.df.dd.d3.c1.f1.d9.e3.ce.c3.ce.c3.b2.b0.e3.e8.cf.c3.c0.f3.db.bb.c6.10a.c9.d4.30.4f.32.33.34.6d.35.39.37.38.6e.3a.8d.4c.3c.31.49.8b.4e.4d.4b.b0.c5.b0.c6.b2.ce.3a.b0.b9.b0.b9.b2.b8.b2.b7.39.35.b0.bc.b0.bc.34.b2.b3.32.4f.b2.b0.8d
http://www.phpx.com/happy/viewth ... =page%3D1#pid947632 ==>加个中文测试看看!再来变态符号!@#$%^&*()_+~=-":|?><《》?+——)(*&……%¥#@!~</xmp>
[ 本帖最后由 52php 于 2007-9-27 07:19 PM 编辑 ]