![]() |
Funktion Rückgängig Machen
Hallo
Wie Kann ich diese Funktion Rückgangig manchen? So das mein File wieder in Originaler ausführung auf dem PC ist.
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); 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); Application.ProcessMessages; end; finally CloseFile(InputFile); CloseFile(OutputFile); Result := True; end; end; Danke für die Antworten |
Re: Funktion Rückgängig Machen
Das sollte genau mit demselben Passwort und XOR wieder zurück gehen.
|
Re: Funktion Rückgängig Machen
Also das selbe Passwort ist Klar aber meinst du denn das ich einfach zweimal die gleichen angaben machen soll?
|
Re: Funktion Rückgängig Machen
Ja klar, teste es einfach aus funktioniert wunderbar:
Delphi-Quellcode:
Edit: Das Verschlüsseln und Entschlüsseln sieht bei mir auch total identisch aus. Musst dir einfach nur mal im binären aufschreiben, was da passiert. wenn du zweimal ein Xor hintereinander machst, kommt der Anfangswert wieder heraus.
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Memo1: TMemo; Button1: TButton; procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); const pw='Hallo'; //Passwort l=10; //Länge des zu verschlüsselnden Textes var a:array[1..l+1] of byte; i,p:integer; z:pchar; begin a[l+1]:=0; //Ende von PChar z:=addr(a[1]); //z zeigt auf das Array um die Zahlen als Buchstaben zu lesen memo1.clear; //Wort erzeugen memo1.lines.add('Original (Zufallswerte)'); for i:=1 to l do begin a[i]:=random(26)+65; //zufällig einen Buchstaben erstellen memo1.lines.add(inttostr(a[i])); end; memo1.lines.add(z); //Encrypten memo1.lines.add(''); memo1.lines.add('Codiert'); p:=1; for i:=1 to l do begin if p>length(pw) then p:=1; a[i]:=a[i] xor ord(pw[p]); inc(p); end; for i:=1 to l do memo1.lines.add(inttostr(a[i])); memo1.lines.add(z); //Decrypten memo1.lines.add(''); memo1.lines.add('Zurückgerechnet'); p:=1; for i:=1 to l do begin if p>length(pw) then p:=1; a[i]:=a[i] xor ord(pw[p]); inc(p); end; for i:=1 to l do memo1.lines.add(inttostr(a[i])); memo1.lines.add(z); end; procedure TForm1.FormCreate(Sender: TObject); begin randomize; end; end. Anfangswert: 0101 =5 Passwort: 1100 =12 codierte Zahl: 0101 xor 1100 = 1001 =9 und jetzt nochmal xor: 1001 xor 1100 = 0101 =5 Also aus 5 mach 9 und wieder 5 (Mit dem Passwort 12) Und auch wenn dein Passwort x Stellen hat, du nimmst ja bei jeder Stelle des Textes auch wieder dieselbe Stelle des Passwortes. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:36 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz