Einzelnen Beitrag anzeigen

JasonClark

Registriert seit: 16. Jan 2006
Ort: Luzern
7 Beiträge
 
Delphi XE2 Professional
 
#1

HILFE: DEC 3.0 -> DEC 5.1/5.2

  Alt 3. Sep 2009, 14:04
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
  Mit Zitat antworten Zitat