Hallo!
Vielen Dank für Deine Unterstützung, auch für die verschiedenen Vorschläge zur möglichen Umstellung.
Leider kann man nicht DEC3.0 und
DEC 5.2 so ohne weiteres im selben Projekt verwenden. Also habe ich mit Delphi 2006 ein Testprogramm erstellt mit
DEC 3.0 und eines mit Delphi 2007 und
DEC 5.2.
Im Ergebnis sieht es erstmal so aus, dass mir der CipherManager oder HashManager in die Suppe spuckt.
Mit folgenden Routinen habe ich mir ein Memo gefüllt für alle möglichen Modi.
Delphi 2006 und
DEC 3.0
Delphi-Quellcode:
procedure TfrmStart.AddEncryptedPassword(aMode: TCipherMode);
var
cipher: TCipher_Blowfish;
hash: THash_RipeMD256;
initHash: string;
pw: string;
begin
cipher := nil;
try
hash := THash_RipeMD256.Create(nil);
cipher := TCipher_Blowfish.Create(MASTER_KEY, hash);
cipher.Mode := aMode;
pw := cipher.EncodeString(ePasswort.Text);
memoErgebnis.Lines.Add(ePasswort.Text + '=' + pw);
finally
FreeAndNil(cipher);
end;
end;
Delphi 2007 und
DEC 5.2
Delphi-Quellcode:
var
CipherClass: TDECCipherClass = TCipher_Blowfish;
HashClass: TDECHashClass = THash_RipeMD256;
procedure TfrmStart.AddEncryptedPassword(aMode: TCipherMode);
var
cipher: TDECCipher;
initHash: string;
pw: Binary;
begin
cipher := nil;
try
cipher := ValidCipher(CipherClass).Create;
cipher.Mode := aMode;
initHash := ValidHash(HashClass).CalcBinary(MASTER_KEY);
cipher.Init(initHash);
pw := cipher.EncodeBinary(ePasswort.Text);
memoErgebnis.Lines.Add(ePasswort.Text + '=' + pw);
finally
FreeAndNil(cipher);
end;
end;
Verschlüsselte Paßwörter:
Delphi-Quellcode:
DEC 3.0
DEC 5.2
cmCTS = cmCTSx
cmCBC = cmCBCx
cmCFB = cmCFB8
cmOFB = cmOFB8
cmECB = cmECBx
Aber alle (
DEC 3.0 und
DEC 5.2) ungleich:
Delphi-Quellcode:
CipherManagerTest.InitKey(MASTER_KEY, nil);
pw := cmTest.EncodeString(ePasswort.Text);
Der CipherManager oder HashManager scheint irgend etwas noch aufzufüllen, denn die verschlüsselten Resultate sind bei einem 8 Zeichen langen Paßwort alle 8 Zeichen lang, mit dem CipherManager/HashManager aber 12 Zeichen.
Ich werde mit jetzt nochmal den CipherManager und HashManager zur Brust nehmen.
Wenn jemand (Assertor ?) noch eine Idee hat oder einen Geistesblitz nach dem Motto: "Ach ja, das liegt daran", bitte her damit.
Grüße