+ -
当前位置:首页 → 问答吧 → 求助,一个PHP函数转换成delphi函数。

求助,一个PHP函数转换成delphi函数。

时间:2011-09-30

来源:互联网

function encode($input)



$FlashFXP_Key = "yA36zA48dEhfrvghGRg57h5UlDv3"; 


if($input=="") return ""; 
$key = rand(1,255); 
//$key = 15; //调试用的

echo "动态Key".$key."<br>"; //随机255的数


if($key >0x0F){ //10进制的15
$result = strtoupper(dechex($key)); //10进制转换成16进制并大写
}else{ 
$result = "0".strtoupper(dechex($key)); //不足15 10进制的15是字母F补0就是0F了并大写


$magic_number = $key; 

echo "magic_number".$magic_number."<br>"; //返回值貌似和上面的随机Key一样没变化……

$result = strval($result); //将16进制的数字转换成字符串类型

echo "result".$result."<br>";  

for($i=0;$i<strlen($input);$i++){ 
 
echo ord($input[$i])+$magic_number."循环次数".$i."<br>"; 

if(ord($input[$i])+$magic_number>0xFF) //判断明文相应字符的10进制数加随机key是否大于255 (16进制就是0XFF)

$magic_number = (ord($input[$i])+$magic_number - 0xFF)^(ord($FlashFXP_Key[$i%28])); //大于255就减去255 然后在和密匙的相应位置的数值xor计算
else 
$magic_number = (ord($input[$i])+$magic_number)^(ord($FlashFXP_Key[$i%28])); //不大于255直接xor 密匙相应位置的数值

if($magic_number>0x0F) //10进制的15
$result .= dechex($magic_number); //直接16进制
else 
$result = $result."0".dechex($magic_number); //16进制后 补0 (并加上面的Key的16进制)


$result = strtoupper($result); //全部转换大写字母
return $result;


这是一个PHP的函数源码,我想转换成 delphi的,但PHP的16进制和10进制转换和delphi 的不同,还有异或运算我也不熟悉,写出来的代码得不到想要的结果,请懂PHP的朋友帮忙转换一下,转成delphi的,多谢了

作者: ymenking   发布时间: 2011-09-30

Encode是自定义函数,加密功能

作者: jingtuzhong   发布时间: 2011-10-01