AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Funktion Rückgängig Machen
Thema durchsuchen
Ansicht
Themen-Optionen

Funktion Rückgängig Machen

Ein Thema von hedie · begonnen am 22. Jan 2007 · letzter Beitrag vom 22. Jan 2007
Antwort Antwort
hedie

Registriert seit: 12. Dez 2005
Ort: Schweiz
1.024 Beiträge
 
Delphi XE6 Starter
 
#1

Funktion Rückgängig Machen

  Alt 22. Jan 2007, 17:05
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
Claudio
Tu was du nicht lassen kannst
- http://endasmedia.ch
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Funktion Rückgängig Machen

  Alt 22. Jan 2007, 17:14
Das sollte genau mit demselben Passwort und XOR wieder zurück gehen.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
hedie

Registriert seit: 12. Dez 2005
Ort: Schweiz
1.024 Beiträge
 
Delphi XE6 Starter
 
#3

Re: Funktion Rückgängig Machen

  Alt 22. Jan 2007, 17:17
Also das selbe Passwort ist Klar aber meinst du denn das ich einfach zweimal die gleichen angaben machen soll?
Claudio
Tu was du nicht lassen kannst
- http://endasmedia.ch
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Funktion Rückgängig Machen

  Alt 22. Jan 2007, 17:34
Ja klar, teste es einfach aus funktioniert wunderbar:
Delphi-Quellcode:
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.
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.

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.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:50 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