Einzelnen Beitrag anzeigen

Benutzerbild von MaBuSE
MaBuSE

Registriert seit: 23. Sep 2002
Ort: Frankfurt am Main (in der Nähe)
1.837 Beiträge
 
Delphi 10 Seattle Enterprise
 
#70

Re: VerschlüsselungsProgramm

  Alt 24. Aug 2005, 07:49
Zitat von Luckie:
Das heißt, verwende ich beim ver- und entschlüsseln einen unterschiedlichen Seed, dann werden die Daten nicht korrekt entschlüsselt. Das heißt wiederum, der Seed entspricht dem Passwort oder?
Im Prinzip ja:

Wie schon in dem gutem altem Turbo Pascal, kannst Du bei den Zufallszahlen auch den Seed setzten.
Früher hatte ich mal so verschlüsselt

@Hagen: Bitte nicht hauen (Ich bin mir ziemlich sicher, das diese Verschlüsselung nicht sicher ist)
  • [edit]
    Ich wusste doch, das Hagen dazu was geschieben hat, war sogar in diesem Thread.
    [equote="Hagen schieb in http://www.delphipraxis.net/internal...=207146#207146 "]Die Verwendung von Random() in der Kryptographie scheint meiner Meinung nach die meist empfohlene und die schwachsinnigste Idee unter Delphi Programmierern zu sein.[/equote]
    Also nicht benutzen, das Beispiel dient nur zur Demostration was der Seed ist. (Initialisierungswert eines Zahlengenerators)
    Und das der Seed durchaus auch das Passwort sein kann.
    [/edit]
Delphi-Quellcode:
...
procedure TForm1.Button1Click(Sender: TObject);
var
  i: Integer;
  s: string;
begin
  s := 'Test';

  // Verschlüsseln
  RandSeed := 5;
  for i := 1 to length(s) do
  begin
    s[i] := chr(ord(s[i]) XOR Round(random(255)));
  end;

  // Entschlüseln (Copy und Paste (ohne Änderung) von Verschlüsseln)
  RandSeed := 5;
  for i := 1 to length(s) do
  begin
    s[i] := chr(ord(s[i]) XOR Round(random(255)));
  end;

  // string ausgeben (Kontrolle)
  Caption := s;
end;
...
Aber in der Hilfe von Delphi steht:
Zitat:
Um den Zufallszahlengenerator zu initialisieren, rufen Sie Randomize einmal auf oder weisen der Variable RandSeed vor dem Aufruf von Random einen Wert zu.

Hinweis: Die Implementierung der Funktion Random kann sich bei einer anderen Compiler-Version ändern. Sie sollten Random daher nicht für Verschlüsselungen oder andere Einsatzbereiche verwenden, in denen reproduzierbare Pseudozufallszahlen benötigt werden.
Falls Du das mal Testen willst, hier das Ganze als Funktion:
Delphi-Quellcode:
function MachWas(s: string; Schluessel: LongInt): string;
var
  i: Integer;
begin
  RandSeed := Schluessel;
  for i := 1 to length(s) do
  begin
    s[i] := chr(ord(s[i]) XOR Round(random(255)));
  end;
  Result := s;
end;
(°¿°) MaBuSE - proud to be a DP member
(°¿°) MaBuSE - proud to be a "Rüsselmops" ;-)
  Mit Zitat antworten Zitat