Einzelnen Beitrag anzeigen

BlueStarHH

Registriert seit: 28. Mär 2005
Ort: Hamburg
855 Beiträge
 
Delphi 11 Alexandria
 
#1

Muss Salt für DEC immer 16-stellig sein?

  Alt 21. Aug 2009, 18:42
Hallo,

ich benutze die folgende Funktion um mit dem DEC einen String zu verschlüsseln. Diese ist vom DEC-Beispielcode leicht abgewandelt. Wenn Salt die Länge 6 oder 8 hat, ist ein Entschlüsseln nicht mehr möglich (Exception). Verlängere ich den Salt auf 16 Stellen klappt es. Im DEC-Beispielcode aus der DEC-Zipdatei wird der Salt mit RandomBinary(16) erzeugt. Also 16-stellig. Muss er immer 16 Stellen haben? Oder ist der Fehler wo anders zu suchen?

Delphi-Quellcode:
function Encrypt(const AText: string; const APassword: string; ATextFormat: TDECFormatClass; Salt: Binary): string; overload;
var
  ASalt: Binary;
  AData: Binary;
  APass: Binary;
begin
  with ValidCipher(ACipherClass).Create, Context do
    try
      if Salt = 'then
        ASalt := RandomBinary(16)
      else
        ASalt := Salt;
      APass := ValidHash(AHashClass).KDFx(APassword[1], Length(APassword) * SizeOf(APassword[1]), ASalt[1], Length(ASalt), KeySize, TFormat_Copy, AKDFIndex);
      Mode := ACipherMode;
      Init(APass);
      SetLength(AData, Length(AText) * SizeOf(AText[1]));
      Encode(AText[1], AData[1], Length(AData));
      Result := ValidFormat(ATextFormat).Encode(ASalt + AData + CalcMAC);
    finally
      Free;
      ProtectBinary(ASalt);
      ProtectBinary(AData);
      ProtectBinary(APass);
    end;
end;
  Mit Zitat antworten Zitat