Andy A.: Verschlüsselung

Hi,

ich habe ein großes Problem mit meiner Verschlüsselungsfunktion. s.u.

Es kommt halt am Ende nicht das richtige wieder raus.

---------------------------------------------------------------------
<textarea rows="27" name="S1" cols="70"><?php
$c1=41088;
$c2=88104;

Function encryp($s,$key,$rueckw){
    global $c1,$c2;
  if ($rueckw) {
    For ($i=0;$i<=strlen($s)-1; $i++){

$result.=chr(substr($s,$i,1) ^ ($key >> 8) & 0xff);
      $key = ((ord(substr($result,-1))+$key)*$c1 + $c2) & 0xffff;
       echo  "$key ".($key >> 8)."\n";
    }
  } else {
      For ($i=strlen($s)-1;$i>=0; $i--){
      $result.=chr(ord(substr($s,$i,1) ^ ($key >> 8)));
      $key = (ord(substr($result,-1))+$key)*$c1 + $c2;
    }
}
  return $result;}

$s="testte";
$s1=encryp($s,815,1);
$result=bin2hex($s1);

echo "$s1
$result\n";
$s1= pack("H" . strlen($result),$result);
$result=encryp($s1,815,1);
echo "\n$result";

?></textarea>
---------------------------------------------------------------------

momentan kann es auf http://www.andreas-albrecht.de/te.php "besichtigt" werden.

Ich bin dankbar für jede Hilfe!

//Ich hab das schon mal geschrieben. Ich hoffe dass ich vielleicht dieses Mal jemanden finde der mir erklären kann, warum beim Entschlüsseln nicht das richtige rauskommt.
//Zur Frage beim letzten Mal: Das hier ist eine Umschrift eier dephi-Funktion.

Andy

  1. hallo,

    nimm irgendwas, dass in php integriert ist. die verfahren sind sicher und schon von milliardentausendzwölf menschen nach fehlern abgesucht worden.

    gruss

    --
    no strict; no warnings;
    1. Es soll nicht groß verändert werden, weil es die gleichen Ergebnisse bringen soll, wie die delphi-Funktion.

      1. dann portier einfach die delphi funktion, das sollte kein problem sein.

        --
        no strict; no warnings;
        1. Hier ist sie:

          Function Encryp(Const S: String; Key: Word; rueckw: Boolean): String;
          Var
            I: byte;
            oben, unten: byte;
          Begin

          Setlength(Result, length(S));
            If Rueckw Then Begin
              For I := Length(S) Downto 1 Do Begin
                Result[I] := char(byte(S[I]) Xor (Key Shr 8));
                Key := (byte(Result[I]) + Key) * C1 + C2;
              End;
            End
            Else Begin
              For I := 1 To Length(S) Do Begin
                Result[I] := char(byte(S[I]) Xor (Key Shr 8));
                Key := (byte(Result[I]) + Key) * C1 + C2;
              End;
            End;

          Encryp := result;
          End;