哪位既懂pascal又懂php的看一下,转换程序 vCR.FieldByName['F_LxYdTel'].AsString=1D0B0909020B090A08251U2534353A3B3839 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我上次看到一个加密解密的算法 php的 1D0B0909020B090A08251U2534353A3B3839 =13381302565是不是说这个? xor 逐位异或 在php中里应该怎么写? 不好意思,我错了!下面的却是pascal! 嗯,我错了,刚得到回复,是一半pascal,一半vbs. 继续解答,这下更晕乎了,pascal可以调用vbs?如何翻译这些?都翻成php的midB、Asc、xor这些都该如何处理? EncryptStr(ID,EnStr); 1D0B0909020B090A08251U2534353A3B3839 =13381302565相应的ID是多少? midB、Asc、xormidB ==> substr()Asc ==> ord()xor ==> ^ <?function EncryptStr($ID,$Str){ $TmpID=$ID; $L=strlen($ID); $TmpID= ""; $mStr = ""; for($ii=1;$ii<=$L;$ii++){ $a=substr($ID,$L-$ii,1); $mStr=chr(ord($a)+$ii % 256); $TmpID = $TmpID.$mStr; } $N=strlen($Str); $mStr = ""; $mStr1= ""; for($ii=1;$ii<=$n;$ii++){ $mStr = chr(ord(substr($Str,$ii,1)) ^ ord(substr($TmpID,(($ii-1) % $L),1))); $mStr1 = $mStr1.$mStr; } return $mStr1;}//解密字符串 function Z36ToC($c){ //将两个36进制转成一个字符 $ic=(substr($c,0,1))*36;//0 $ics=substr($c,1,1);//B if ($ics>'9'){ $ic=$ic+ord(substr($c,1,1))-ord('A')+10; }else{ $ic=$ic+substr($c,1,1); } $Result=chr($ic); return $Result; } function UnEncryptDStr($ID,$Str){ //将STR从两位 0..9,A..Z 36串转单字节串。 $L=strlen($Str); if (($L<32) or (($L % 2)<>0)) exit; //计密串错误 $L=$L/2; $EnStr=''; for($i=1;$i<=$L;$i++){ $c=substr($Str,$i*2-2,2); $ztoc=Z36ToC($c); $EnStr=$EnStr.$ztoc; } //加密ID不足10位,补到10位 $L=strlen($ID); if( $L<10) for($i=$L-1;$i<=10;$i++) $ID=$ID+chr(ord('0')+$i-1); $EnStr=EncryptStr($ID,$EnStr); //将ID与STR做Xor解密 $StrLen=ord(substr($EnStr,0,1)); //实际明文的长度 return $Result;}$Str='1D0B0909020B090A08251U2534353A3B3839';$ID='lin123';echo UnEncryptDStr($ID,$Str);?>帮我看看,改造不成功,哭死?两者之间字符串截取不同,php从0开始,pascal从1开始。是不是?我是按输出结果判断的。 一句php的代码,请解释意思 新做了个网站建设网站,大家给提提建议!谢谢!!(散分) PHP提交的数据无法写入数据库 数组的问题 求一mysql存储过程 VPS装好后网站打开PHP变为下载 用ASP、PHP、JSP的人数对比似乎是 ASP>PHP>JSP,是不是这样呀? 有没有复制文件夹的函数啊? 是太难了还是太简单了,帮我看看吧 gd库显示中文问题 关于简单的循环问题。。。 phpinfo()显示Configuration File (php.ini)路径是/usr/local/php/lib,可这个路径下没有php.ini文件?
是不是说这个?
如何翻译这些?都翻成php的
midB、Asc、xor这些都该如何处理?
相应的ID是多少?
Asc ==> ord()
xor ==> ^
function EncryptStr($ID,$Str){
$TmpID=$ID;
$L=strlen($ID);
$TmpID= "";
$mStr = "";
for($ii=1;$ii<=$L;$ii++){
$a=substr($ID,$L-$ii,1);
$mStr=chr(ord($a)+$ii % 256);
$TmpID = $TmpID.$mStr;
}
$N=strlen($Str);
$mStr = "";
$mStr1= "";
for($ii=1;$ii<=$n;$ii++){
$mStr = chr(ord(substr($Str,$ii,1)) ^ ord(substr($TmpID,(($ii-1) % $L),1)));
$mStr1 = $mStr1.$mStr;
}
return $mStr1;
}//解密字符串 function Z36ToC($c){ //将两个36进制转成一个字符
$ic=(substr($c,0,1))*36;//0
$ics=substr($c,1,1);//B
if ($ics>'9'){
$ic=$ic+ord(substr($c,1,1))-ord('A')+10;
}else{
$ic=$ic+substr($c,1,1);
} $Result=chr($ic);
return $Result;
}
function UnEncryptDStr($ID,$Str){
//将STR从两位 0..9,A..Z 36串转单字节串。
$L=strlen($Str);
if (($L<32) or (($L % 2)<>0)) exit; //计密串错误
$L=$L/2;
$EnStr='';
for($i=1;$i<=$L;$i++){
$c=substr($Str,$i*2-2,2);
$ztoc=Z36ToC($c);
$EnStr=$EnStr.$ztoc;
} //加密ID不足10位,补到10位
$L=strlen($ID);
if( $L<10)
for($i=$L-1;$i<=10;$i++)
$ID=$ID+chr(ord('0')+$i-1); $EnStr=EncryptStr($ID,$EnStr); //将ID与STR做Xor解密
$StrLen=ord(substr($EnStr,0,1)); //实际明文的长度
return $Result;
}
$Str='1D0B0909020B090A08251U2534353A3B3839';
$ID='lin123';
echo UnEncryptDStr($ID,$Str);
?>
帮我看看,改造不成功,哭死?
两者之间字符串截取不同,php从0开始,pascal从1开始。是不是?我是按输出结果判断的。