如果我懂delphi我就义务给你做....

解决方案 »

  1.   

    <?//要让字符转换成为没有办法直接看到规律的形式。//-加密==========
    //-原始字符串
    //-每个字符倍增加密,前空补0,形成4位的数字串,
    //-打乱排列
    //-加密的3位的数字串
    //打乱排列->字符->3位的数字串->
    //如何让相同的明文加密后成为不同的密文,而且可以回复出原来的明文。
    //就要制造出一对多的方案,最简单的就是扩大5倍,0到4都表示0,5到9都表示2。
    //倍增加密:j = i * t + radom(t)
    //倍减解密:i = j div t  $timer = 7;
      $digi = 3;
      $comp_ch = '0';
      $num0 = 48;
      $space = 32;//加密函数
    function Enc($str) { //:String;
    global $timer,$digi,$comp_ch,$num0,$space;
      $result = $str;     
      $len = strlen($str);
      for($i=0;$i < $len;$i++) {
        $re .= complement(my_time(ord($str[$i]),$timer,$space),$digi,$comp_ch);
      }
      $result = disturb($re,true);
      return $result;}//解密函数
    function Dec($str) { //:String;
    global $timer,$digi,$comp_ch,$num0,$space;
      $str = disturb($str,false);
      for($i=0;$i<=floor(strlen($str) / $digi)-1;$i++)
      {
        $num = substr($str,$i*$digi,$digi);
        $result .= chr(my_div($num,$timer,$space));
      }
      return $result;
    }//当字符不够digi位的时候,用ch在前面补充。
    function complement($str,$digi,$ch) {//:String;
      $result = $str;
      for( $i=1;$i<=$digi-strlen($str);$i++) $result=""+$ch+$result;
      return $result;
    }//可逆转的字符转换函数
    function transform($ch,$dir) { //:char;
    global $num0;
      $intchr = ord($ch);
      if($dir) {
        $intch = my_time($intchr,5,$num0) + 30;
      } else {
        $intch = my_div($intchr - 30,5,$num0);
      }
      $result = chr($intch);
      return $result;
    }//可逆转的扰排函数
    function disturb($str,$dir){ // :String;
      $result = $str;     
      $len = strlen($str);
      $addi = $len % 2; //进行反转的时候如果奇数和偶数的处理不一样
      $i=1;
      while ( $i <= $len )
      {
        if ( $i <= $len ) { $result[$len-$i+$addi-1] = transform($str[$i-1],$dir); }
        $i++;
        if ( $i <= $len ) { $result[$i-1] = transform($str[$i-1],$dir); }
        $i++;
      }
      return $result;
    }function my_time($i,$t,$base) { //: integer;
      $result = ($i-$base) * $t + rand(1,$t-1);
      return $result;
    }function my_div($i,$t,$base) { //: integer;
      $result = floor($i / $t) + $base;
      return $result;
    }$str_1="abcedfghjklx";
    echo " s t r_1=".$str_1."<br />";
    $str_2=Enc($str_1);
    echo " s t r_2=".$str_2."<br />";
    $str_3=Dec($str_2);
    echo " s t r_3=".$str_3."<br />";?>