vCR.FieldByName['F_LxYdTel'].AsString=1D0B0909020B090A08251U2534353A3B3839

解决方案 »

  1.   

    我上次看到一个加密解密的算法 php的
      

  2.   

    1D0B0909020B090A08251U2534353A3B3839 =13381302565
    是不是说这个?
      

  3.   

    xor 逐位异或 在php中里应该怎么写?
      

  4.   

    不好意思,我错了!下面的却是pascal!
      

  5.   

    嗯,我错了,刚得到回复,是一半pascal,一半vbs.
      

  6.   

    继续解答,这下更晕乎了,pascal可以调用vbs?
    如何翻译这些?都翻成php的
    midB、Asc、xor这些都该如何处理?
      

  7.   

    EncryptStr(ID,EnStr); 1D0B0909020B090A08251U2534353A3B3839 =13381302565
    相应的ID是多少?
      

  8.   

    midB、Asc、xormidB ==> substr()
    Asc ==> ord()
    xor ==> ^
      

  9.   

    <?
    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开始。是不是?我是按输出结果判断的。