- 论坛徽章:
- 0
|
function initDict(){
$x = array("0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F" ;
$y = array("0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F" ;
$count = -97;
$dict = array();
while(list($key,$value)=each($x))
{
reset($y);
while(list($keyy,$valuey)=each($y))
{
//echo $count;
//echo $count;
//$row=array($count,sprintf("%s%s",$value,$valuey));
$dict[$count] = sprintf("%s%s",$value,$valuey);
$count = $count + 1;
}
}
//echo sprintf("Total count is %s",count($dict));
//$ln = 0 ;
reset($dict);
/*
while(list($keydict,$valuedict)=each($dict))
{
$ln = $ln + 1;
echo sprintf("%c%c",chr(13),chr(10));
echo sprintf("\n%d:%s==>%s",$ln,$keydict,$valuedict);
}
*/
return $dict;
}
function decPassword($userName,$passWord)
{
$dictRef=initDict();
$decrypt=" ";
$user=strtolower($userName);
$firstCharCode=ord($user);
$reference=$firstCharCode-97;
$userCode=array();
$passCode=array();
for($i=0;$i<strlen($user);$i++){
$userChar=ord(substr($user,$i,1));
$userCode[$i]=$firstCharCode-$userChar;
}
for($p=0;$p<strlen($passWord)/2;$p++){
$passChar=substr($passWord,$p*2,2);
$passCode[$p]=array_search($passChar,$dictRef);
//echo sprintf("\r\n current offset is : %d",$p);
//echo sprintf("pass Code %d is:%s",$p,$passCode[$p]);
}
for($k=0;$k<count($passCode);$k++){
reset($passCode);
$pos = $k % strlen($user);
//echo $passCode[$k]+$userCode[$pos]-$reference;
//$decrypt = sprintf("%s",chr($passCode[$k]+$userCode[$pos]-$reference));
$decrypt = sprintf("%s%s",$decrypt,chr($passCode[$k]+$userCode[$pos]-$reference));
//echo $k;
}
return $decrypt;
}
完成了一段解密Imail帐号密码的PHP代码,先帖上来瞧瞧,PHP好久没摸了,最后才发现,字串连接用.号可以搞定,一时没查到,用上sprintf了,那个别扭,汗一个。不过,功能是实现了,当然,我的是针对Imail7的,不知道8版本的有没有变化。 |
|