Frage

Laut dem Crypt () Dokumentation, Das Salz muss 22 Basis 64-Ziffern aus dem Alphabet "./0-9a-za-z" sein.

Dies ist das Code -Beispiel, das sie geben:

crypt('rasmuslerdorf', '$2a$07$usesomesillystringforsalt$');

Der erste verwirrende Teil ist, dass Salz 25 Zeichen hat, nicht 22.

Frage 1: Bedeutet das, dass das Salz sein soll länger als 22 Zeichen?

Dann habe ich die Funktion selbst getestet und etwas bemerkt. Wenn ich ein 20 -Charakter -Salz benutze, verstehe ich das

// using 20 char salt: 00000000001111111111
crypt('rasmuslerdorf', '$2a$07$00000000001111111111$');
// $2a$07$00000000001111111111$.6Th1f3O1SYpWaEUfdz7ieidkQOkGKh2

Wenn ich also ein 20 -Zeichen -Salz verwendet habe, befindet sich das gesamte Salz im Ausgang. Was bequem ist, weil ich das Salz dann nicht an einem separaten Ort aufbewahren muss. (Ich möchte zufällige Salze verwenden). Ich könnte das Salz aus dem erzeugten Hash zurücklesen.

Wenn ich jedoch ein 22 -Zeichen -Salz verwende, wie die Dokumentation sagt, oder ein längeres, wird das Salz am Ende abgeschnitten.

// using 22 char salt: 0000000000111111111122
crypt('rasmuslerdorf', '$2a$07$0000000000111111111122$');
// $2a$07$000000000011111111112uRTfyYkWmPPMWDRM/cUAlulrBkhVGlui
// 22nd character of the salt is gone

// using 25 char salt: 0000000000111111111122222
crypt('rasmuslerdorf', '$2a$07$0000000000111111111122222$');
// $2a$07$000000000011111111112uRTfyYkWmPPMWDRM/cUAlulrBkhVGlui
// Same hash was generated as before, 21 chars of the salt are in the hash

Frage 2: Was genau ist die richtige Länge eines Salzes? 20? 22? Länger?

Frage 3: Ist es auch eine gute Idee, das Salz aus dem Hash zu lesen, wenn es Zeit ist, Passwörter zu überprüfen? Anstatt das Salz in einem separaten Feld zu speichern und es von dort aus zu lesen. (Was überflüssig erscheint, da das Salz in den Hash aufgenommen zu sein scheint).

War es hilfreich?

Lösung

Blowfish -Salze sollten 22 Chars lang sein (einschließlich der nachverfolgenden $, also 21) - Sie können sich noch einmal erkundigen var_dump(CRYPT_SALT_LENGTH), Ich kann dies jetzt nicht überprüfen, aber ich vermute, dass weniger Zeichen einen Fehler zurückgeben und mehr Zeichen abgeschnitten werden.

In Bezug auf Ihre dritte Frage: Ja, Sie sollten den Hash mit den Parametern der eingebetteten Salz (und Kosten) aus dem Hash selbst lesen und überprüfen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top