Hallo Zusammen
Ich benutze schon sei einiger Zeit zum Speichern von Dateistreams die
DEC 3.0 und habe mich damals für den TCipher_SCOP entschieden.
Damals bei der
DEC 3.0 gab es ja folgenden einfachen Aufruf:
Delphi-Quellcode:
{ .. }
with TCipher_SCOP.Create('Secret password', nil) do
begin
try
FFileStream.Position := 0;
EncodeStream(FFileStream, FFileStream, FFileStream.Size);
finally
Free;
end;
end;
{ .. }
Wie man sieht gab es bei der
DEC 3.0 beim constructor Create zwei Parametermöglichkeiten. Wobei der erste Parameter ein optionales Passwort war. In der
DEC 5.1/5.2 gibt es nur noch das constructor Create ohne Parameter. Somit hab ich versucht die Sache mit der Hasherstellung wie in der
DEC 3.0 nachzustellen, indem ich bei der
DEC 5.1/5.2 eine eigene Klasse abgleitet habe:
Delphi-Quellcode:
{ TMyCipher_SCOP }
constructor TMyCipher_SCOP.Create(const APassword: AnsiString);
var
FHash: TDECHash;
I : Integer;
begin
inherited Create;
if (Length(APassword) > 0) then
begin
FHash := THash_RipeMD256.Create;
try
FHash.Init;
FHash.Calc(PAnsiChar(APassword)^, Length(APassword));
FHash.Done;
I := FHash.DigestSize;
if (I > Context.KeySize)
then
I := Context.KeySize;
{ Ab hier scheint etwas schief zugehen }
Init(FHash.Digest^, I, InitVector, InitVectorSize, 0);
Encode(FHash.Digest^, FHash.Digest^, FHash.DigestSize);
Done;
finally
FHash.Free;
end;
end;
end;
Das grösse Problem ist nun das ich eine Datei mit Hilfe von
DEC 3.0 unter Delphi 2007 mit einem Stream gespeichert hab und nun auf Delphi 2009 umgestiegen bin und mit meinem Programm die Datei wieder laden muss.
Mir sind unteranderem einige Änderungen bei der
DEC 5.1/5.2 im CTSx und auch im GetContext aufgefallen.
Hoffe mir kann jemand behilflich sein, da es wirklich dringend wäre. Evtl. hat ja Hagen hier einen schnellen Hinweis?
Gruss
Jason