Einzelnen Beitrag anzeigen

automatix

Registriert seit: 1. Mai 2008
Ort: Remscheid
39 Beiträge
 
Delphi 2007 Enterprise
 
#8

Re: Umstellung DEC 3.0 auf 5.2

  Alt 20. Nov 2008, 15:43
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
  Mit Zitat antworten Zitat