Hallo!
Wir haben einige
DCOM-Server die ihre
DB-Anmeldedaten aus der Windows Registratur holen. Das Passwort wird verschlüsselt dort hinterlegt. Mit folgendem
DEC 3.0 Code wird das Passwort entschlüsselt:
Delphi-Quellcode:
// cm ist TCipherManager mit THashManager
cm.InitKey(KEY, nil);
pw := cm.DecodeString(passwort);
Nun habe ich schon erfahren, dass es nicht gut war diese Komponenten zu verwenden, da sie nur zu Testzwecken gedacht waren. Leider ist es damals so gemacht worden.
Als Properties wurden die Standardeinstellungen genommen.
HashManager.Algorithm: Ripe Message Digest 256
CipherManager.Algorithm: Blowfish
CipherManager.Mode: cmCTS
Jetzt versuche ich das umzustellen auf
DEC 5.2 und habe dabei schon einige Möglichkeiten durchprobiert, die alle nicht das gewünschte Resultat brachten. Ich möchte vermeiden, bei den Kunden die ganzen Passwörter neu verschlüsseln zu müssen und / oder unterschiedliche Verschlüsselungsverfahren je nach Server zu haben.
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;
pw := ValidHash(HashClass).CalcBinary(KEY);
cipher.Init(pw);
Result := cipher.DecodeBinary(aPasswort);
finally
FreeAndNil(cipher);
end;
end;
Was muss ich ändern, damit ich die alten Passwörter entschlüsselt bekomme?
Oder ist die gewählte Algorithmus / Mode Kombination inkompatibel zwischen V3.0 und V5.2?
Vielen Dank