Einzelnen Beitrag anzeigen

Klapauzius

Registriert seit: 8. Feb 2018
Ort: Region Bern (Schweiz)
71 Beiträge
 
Delphi 11 Alexandria
 
#1

DEC 6.0 Salzstreuer

  Alt 22. Dez 2020, 08:19
Anlässlich des verfrühten Weihnachtsgeschenkes von TurboMagic (Danke!) hab ich mir mal das DEC angeschaut. Vieles was da in DEC angeboten wird, kann ich verstehen und nachvollziehen, auch mit Hilfe der beiligenden Beispiele.

Mein Problem:

Eine sichere Blockverschlüsselung beinhaltet für mich

1. Passwordhash
2. Salz
3. Verschlüsseln

Meine Versuche das zu realisieren scheitern aber grandios, hauptsächlich wohl daran, dass mir das grundlegende Verständnis für Verschlüsslung fehlt.

Mein Versuch um Salz einzustreuen

Delphi-Quellcode:
//FPassord: utf8String;

function MyClass.GenerateHashedPw: TBytes;
var
  Hash: THash_SHA256;
  Salt: Cardinal;
  SaltBytes: TBytes;
  PW: TBytes;
  HashedPw: TBytes;
begin
  Salt:= Random(16);
  Hash:= THash_SHA256.create;
  try
   // Transform inputs to Bytes
   SaltBytes:= TEncoding.utf8.GetBytes(inttostr(Salt));
   PW:= TEncoding.utf8.GetBytes(FPassword);

   //Generate Hashed PW
   HashedPw:= Hash.KDF1(PW, SaltBytes, Cipher.Context.KeySize);
   result:= HashedPw;

  finally
    Hash.Free;
  end;
anschliessend verschlüssle ich Text
Delphi-Quellcode:
//cipher: Cipher:= TCipher_AES
//FIV, FFIler: TBytes

 Cipher.Init(GenerateHashedPw, FIV, FFiller);
 result:= Cipher.EncodeStringToString(PlainText, TFormat_BASE64));

Beim Entschlüsseln des Strings erhalte ich aber ein falsches Resultat. Lasse ich das Salz weg, funktioniert alles.

Frage oder Bitte:
Gibt es irgendwo ein vollständiges Beispiel für Verschlüsselung mit Salz oder kann mir jemand erklären wie ich das Salz korrekt verwende?
Albert
  Mit Zitat antworten Zitat