Einzelnen Beitrag anzeigen

Aviator

Registriert seit: 3. Jun 2010
1.611 Beiträge
 
Delphi 10.3 Rio
 
#7

AW: Fehler bei Übergabe eines Salts an BCrypt

  Alt 18. Okt 2016, 16:12
Oder weist Du die Ergebnisse bc.HashPassword einem string zu? mystr := bc.HashPassword(Password, guid.D4, 12); Da die Deklaration so aussieht
Delphi-Quellcode:
//If you want to handle the cost, salt, and encoding yourself, you can do that.
class function HashPassword(const password: UnicodeString; const salt: array of Byte; const cost: Integer): TBytes; overload;
erhälts Du ein Ergebnis vom Typ TBytes, was manche Fehlermeldungen erklären würde.
Oh mann.

Das war es. Der Rückgabetyp dieser Funktion ist ein anderer. Manchmal sieht man den Wald vor lauter Bäuimen nicht. Die Frage ist nur, warum die Funktion einen anderen Rückgabetyp hat.

So funktioniert es jetzt.

Delphi-Quellcode:
function HashPassword(const Password: string): string;
var
  bc: TBCrypt;
  guid: TGUID;
  tb: TBytes;
begin
  Result := EmptyStr;
  bc := TBCrypt.Create;
  try
  guid := TGUID.Create;
  tb := bc.HashPassword(Password, guid.ToByteArray, 12);
  Result := TEncoding.Unicode.GetString(tb);
  finally
    bc.Free;
  end;
end;
EDIT: Etwas zu früh gefreut. Die Zeile Result := TEncoding.Unicode.GetString(tb); macht noch ein paar Probleme. Da kommt im Moment nur Müll raus.

Wie kann ich TBytes in String umwandeln, sodass nochmal ein Hash rauskommt?

Geändert von Aviator (18. Okt 2016 um 16:17 Uhr)
  Mit Zitat antworten Zitat