Einzelnen Beitrag anzeigen

Assertor

Registriert seit: 4. Feb 2006
Ort: Hamburg
1.296 Beiträge
 
Turbo C++
 
#2

Re: Umstellung DEC 3.0 auf 5.2

  Alt 18. Nov 2008, 18:32
Hi automatix,

bist Du denn sicher, daß so wie Du es nutzt bei der alten DEC auch der Hash vom Passwort angewendet wurde? Ich kenne leider die DEC 3 nicht mehr so gut, aber wenn das Kennwort direkt als Basis der Verschlüsselung ohne Hash angewendet wird, wäre das eine mögliche Ursache.

Zu Deinem Code:
Zitat von automatix:
Delphi-Quellcode:
var
  CipherClass: TDECCipherClass = TCipher_Blowfish;
  CipherMode: TCipherMode = cmCTSx;
  HashClass: TDECHashClass = THash_RipeMD256;

function Decode(const aPasswort: string): string;
var
  cipher: TDECCipher;
  pw: Binary;
begin
  cipher := nil;
  Result := '';
  try
    cipher := ValidCipher(CipherClass).Create;
    cipher.Mode := CipherMode;
    // Edit: Ich hatte fälschlicherweise hier KEY durch aPasswort ersetzt, da ich
    // von dem Fkt.Parameter ausging beim überfliegen. Mfg Assertor
    pw := ValidHash(HashClass).CalcBinary(KEY);
    cipher.Init(pw);
    Result := cipher.DecodeBinary(aPasswort);
  finally
    FreeAndNil(cipher);
  end;
end;
Ich würde jetzt

1) prüfen, ob in der DEC 3 der Hash oder das Passwort direkt verwendet wird
2) prüfen, in welchem Format die Ausgabe des Hash bzw. Ciphers vorliegt

Es kann ja z.B. sein das bei der DEC 3 das Encoding bsp. einen MIME32 oder HEX-Text zurückliefert. Dies wäre dann mit deinem obigen DEC 5.2 Code inkompatibel, hier müsstest Du entsprechend das Encoding anpassen.

Ich hätte jetzt fast gesagt, nenn mir mal einen Beispieltext aus der Registry und das Passwort, dann guck ich ob das geht - aber das scheidet wohl aus wegen gewisser Sicherheitsaspekte

Gruß Assertor

P.S.: Zusätzlich kannst Du schon den Code für D2009 "vorbereiten" in dem Du - ähnlich meinem DEC 5.2 Beispiel - Length(aPasswort) * SizeOf(aPasswort[1]) nutzt. Dann kommt bei einer Umstellung der Code auch mit der geänderten Größe der Chars klar.
Frederik
  Mit Zitat antworten Zitat