Hallo,
ich habe mich in den letzten Tagen mit dem RC4 Stromdekorierer beschäftigt und stehe vor einem kleinen Problem. Ich habe ein Programm, das mit MemoryStreams arbeitet. Ich hatte in letzter Zeit nach einer Verschlüsselungsmöglichkeit für besagte Streams gesucht und das hier gefunden.
Allerdings scheine ich das Beispiel von Maximov über die Benutzung nicht ganz zu verstehen. Zwar funktioniert es mit FileStreams wunderbar, aber es sollte doch auch möglich sein, MemoryStreams zur direkten Weiterverwendung zu benutzen.
Ich schreibe das hier jetzt, da ich Maximov per PM nicht erreichen kann.
Verschlüsseln:
Delphi-Quellcode:
var
MS1, MS2: TMemoryStream;
CodeStream: TRCxStreamDecorator;
begin
// MS1 erhält hier einen Inhalt
(...)
CodeStream := TRCxStreamDecorator.Create(MS2, False);
CodeStream.Password := 'Passwort';
CodeStream.WriteSalt;
MS1.SaveToStream(CodeStream);
(...)
// MS2 soll nun den verschlüsselten Stream enthalten zwecks Weiterverwendung
CodeStream.Free;
MS1.Free;
MS2.Free;
end;
Entschlüsseln:
Delphi-Quellcode:
var
MS1, MS2: TMemoryStream;
CodeStream: TStream;
begin
// MS1 erhält hier den verschlüsselten Stream
(...)
CodeStream := TRCxStreamDecorator.Create(MS1, False, 'Passwort', emEncodeWriting);
(CodeStream as TRCxStreamDecorator).ReadSalt;
MS2.LoadFromStream(CodeStream);
(...)
// MS2 soll nun den entschlüsselten Stream enthalten zwecks Weiterverwendung
CodeStream.Free;
MS1.Free;
MS2.Free;
end;
An dieser Stelle bekomme ich einen "Stream-Lesefehler":
Delphi-Quellcode:
procedure TRCxStreamDecorator.ReadSalt;
(...)
ReadBuffer(Pointer(Salt)^, Size);
(...)
Ich hoffe, hier kennt sich jemand damit aus.