
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;