Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi XOR VErschlüsselung schneller machen (https://www.delphipraxis.net/37116-xor-verschluesselung-schneller-machen.html)

idontwantaname 31. Dez 2004 13:24


XOR VErschlüsselung schneller machen
 
Hi !

ich habe eine kleine Funktion für die XOR-Verschlüsselung gemacht, doch die ist ziemlich lahm, hätte jemand vielleicht eine Idee, diese schneller zu machen ??

Delphi-Quellcode:
function XORCrypt(Password,InputFilePath,OutputFilePath:String):Boolean;
var aktChar: Integer;
   InputFile, OutputFile: File of Byte;
   Buffer:Byte;
begin
    Result := False;

    try
       aktChar := 1;

       AssignFile(InputFile,InputFilePath);
       Reset(InputFile);

       AssignFile(OutputFile,OutputFilePath);
       Rewrite(OutputFile);

{       MainForm.ProgressBar.Max := FileSize(InputFile);
        MainForm.ProgressBar.Position := 0;
        MainForm.ProgressBar.Enabled := True;
}
      while not Eof(InputFile) do
        begin
         if(aktChar > Length(Password)) then aktChar := 1;
          Read(InputFile,Buffer);
           Buffer := Buffer xor ord(Password[aktChar]);
           Write(OutputFile,Buffer);
           Inc(aktChar);
//          MainForm.ProgressBar.Position := MainForm.ProgressBar.Position + 1;
       end;
    finally
       CloseFile(InputFile);
       CloseFile(OutputFile);

        Result := True;
    end;
end;

Robert Marquardt 31. Dez 2004 14:11

Re: XOR VErschlüsselung schneller machen
 
Buffer: Byte ist das Problem.
Da du anscheinend jedes Byte einzeln liest und schreibst, kann die Performance nur schrecklich sein.
Mach einen Puffer und lies und schreib in groesseren Stuecken, dann ist der Overhead nicht so gross.

idontwantaname 31. Dez 2004 16:54

Re: XOR VErschlüsselung schneller machen
 
dann nehme ich halt 8 byte, nur wie geht so etwas ??

Muetze1 1. Jan 2005 01:52

Re: XOR VErschlüsselung schneller machen
 
Moin!

8 Byte? Das bringt auch nicht mehr - wie wärs mit einem 8 KB oder mehr Puffer? Wie wäre es mit 2 TFileStream's anstatt den alten Pascal Methoden?

MfG
Muetze1

supermuckl 1. Jan 2005 03:54

Re: XOR VErschlüsselung schneller machen
 
oder gar MMF :)

aber ich glaube das wäre mit kanonen auf spatzen geschossen. da man hier kontinuierlich von a nach b streamt, kann man auch nen normalen filestream verwenden :)

generic 3. Jan 2005 06:38

Re: XOR VErschlüsselung schneller machen
 
warum lädst du die datei nicht in einen tmemorystream tobst mit asm durch und dann wieder speichern?

Chewie 3. Jan 2005 10:29

Re: XOR VErschlüsselung schneller machen
 
Zitat:

Zitat von generic
warum lädst du die datei nicht in einen tmemorystream tobst mit asm durch und dann wieder speichern?

Assembler-Befehle direkt zu schreiben dürfte dir hier nichts bringen, eine einfache XOR-Operation sollte der Compiler mindestens genauso gut optimieren können wie ein Mensch.


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:34 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz