3

古い「暗号化された」データを、古いシステムの適切な暗号化アルゴリズムに変換する必要があります。私はこのコードを持っています:

 function unpackString($s,$l){
      $tmp=unpack('c'.$l,$s);
      $return=NULL;
      foreach($tmp as $v){
          if($v>0){
              $return.=chr($v);
          }
      }
      return $return;
  }
  function packString($s,$l){
      $return=NULL;
      for($i=0;$i<$l;$i++){
          $return.=pack('c',ord(substr($s,$i,1)));
      }
      return $return;
  }

  $string='StackOverflow Is AWESOME';
  $l=strlen($string);

  $encoded=packString(base64_encode($string),$l);
  $decoded=base64_decode(unpackString($encoded,$l));


  echo "\n".$decoded."\n";

出力が表示される理由と表示StackOverflow Is Aされない理由StackOverflow Is AWESOME

4

1 に答える 1

12

base64 エンコーディングは、文字列のサイズを約 33% 拡大します。base64 でエンコードされたものではなく、元の文字列の長さを渡しています。

StackOverflow Is AWESOME  - 24 chars plaintext
U3RhY2tPdmVyZmxvdyBJcyBBV0VTT01F - 32 chars base64 encoded

だからあなたは8文字を切り落として、あなたを残しています

U3RhY2tPdmVyZmxvdyBJcyBB

にデコードする

StackOverflow Is A
于 2011-10-26T14:33:38.500 に答える