Einzelnen Beitrag anzeigen

Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#3

Re: Einmal mit DEC Ver- und Entschlschlüsseln funktioniert n

  Alt 31. Dez 2006, 13:01
So und nun noch zum Salt.

Ändere deine Methoden ab:

Delphi-Quellcode:
function TfrmManager.Encode(const Key: String; const Text: String): String;
var
  Salt: Binary;
begin
  with TCipher_Rijndael.Create do
  try
    Mode := cmCBCx;
    Salt := RandomBinary(16);
    Init(THash_SHA1.KDFx(Key, Salt, Context.KeySize));
    Result := TFormat_MIME64.Encode(Salt + EncodeBinary(Text));
  finally
    Free;
  end;
end;

function TfrmManager.Decode(const Key: String; const Text: String): String;
var
  Data: Binary;
begin
  with TCipher_Rijndael.Create do
  try
    Mode := cmCBCx;
    Data := TFormat_MIME64.Decode(Text);
    Init(THash_SHA1.KDFx(Key, Copy(Data, 1, 16), Context.KeySize));
    Result := DecodeBinary(Copy(Data, 16, MaxInt));
  finally
    Free;
    ProtectBinary(Data);
  end;
end;
Du musst also den Passwort-Salt mit in deine Daten reinpacken, logisch sonst hast du ja zur Dekodierung nicht die gleiche Ausgangsituation. Die Verwendung eines Passwort-Salts mit einer KDF ist aber eine immer zu empfehlende Praxis, schützt sie doch perfekt das Passwort vor Brute Force Angriffe. Also lieber einen leicht komplizierteren Weg gehen dafür aber um vieles sicherer als ohne dieses Salt.

Achtung: obige Sourcestücken habe ich nicht getestet ! (Indizes in Copy())

Gruß Hagen
  Mit Zitat antworten Zitat