Thema: Delphi Schnellere XOR Operation

Einzelnen Beitrag anzeigen

Dbof

Registriert seit: 20. Mär 2008
61 Beiträge
 
#1

Schnellere XOR Operation

  Alt 28. Okt 2008, 22:03
Einen schönen Abend!

Ich nutze die folgende Funktion, um 1 Datei mit einem Teil der 2. Datei zu "verschlüsseln", wobei dies nur eine simple XOR-Verschlüsselung ist:

Delphi-Quellcode:
procedure Crypt(XFile, KFile: String); //Durch die freundliche Unterstützung von rollstuhlfahrer und Uwe Raabe entstanden
var
  fkey, fxfile: TFilestream;
  keys: array[0..524287] of Char; // deine Menge weniger 1
  i: Cardinal;
  buffer: Char;
begin
  fkey := TFileStream.Create(kfile, fmOpenRead);
  fkey.Read(keys, 524288); // nun wieder vollzählig
  fkey.Free; // wird nicht mehr benötigt, da im Speicher

  fxfile := TFileStream.Create(xFile, fmOpenReadWrite);
  for i := 0 to fxfile.Size -1 do
  begin
    fxfile.Read(buffer, 1);
    fxfile.Position := fxFile.Position - 1;
    buffer := Chr(Ord(buffer) XOR Ord(keys[(i-1) mod 524287]));
    fxFile.Write(buffer, 1); // XOR
  end;
  fxfile.Free;
end;
Wenn ich diese Funktion in mein Programm integriere, läuft sie gut. Das jedoch nur bei "kleinen" Schlüsseldateien. Will ich eine größere Datei verwenden, braucht das Programm ewig. Dabei lässt sich auch das GUI kaum mehr nutzen, bzw. stürzt völlig ab. Kann ich was dagegen tun? Oder gibt es vielleicht eine "echte" Verschlüsselungsmethode, die schnell genug ist? Die zu ver- und entschlüsselnden Dateien sollten beliebig groß sein können.

Danke im Voraus
  Mit Zitat antworten Zitat