Frage

Ich würde gerne benutzen Tragbares PHP -Passwort -Hashing -Framework zu Hash -Passwörtern. Aber ich finde, dass seine Demos kein Salz verwenden, um ein Passwort zu haben. Aber es verwendet ein Dummy -Salz, um das Passwort zu überprüfen, das ich seltsam finde, und ich verstehe diese Idee überhaupt nicht.

$dummy_salt = '$2a$08$1234567890123456789012';

if (isset($dummy_salt) && strlen($hash) < 20)
        $hash = $dummy_salt;

Ich frage mich, ob ich die Konventionmethode verwenden möchte, die ich das eindeutige Salz generieren und für jeden Benutzer in meiner Datenbank speichern kann, wie kann ich dann tragbare PHP -Kennworthashing -Framework verwenden, um Salze zu generieren?

Dies ist die Funktion, die ich mit Kennwörtern Hash -Passwörter verwende, aber mir wurde gesagt, dass SHA512 das gleiche Problem wie SHA1 hat, was dem Experten wie tragbarem PHP -Passwort -Hashing -Framework vertrauen kann.

function hash_sha512($phrase,&$salt = null)
{
    //$pepper = '!@#$%^&*()_+=-{}][;";/?<>.,';

    if ($salt == '')
    {
        $salt = substr(hash('sha512',uniqid(rand(), true).PEPPER_KEY.microtime()), 0, SALT_LENGTH);
    }
    else
    {
        $salt = substr($salt, 0, SALT_LENGTH);
    }

    return hash('sha512',$salt.PEPPER_KEY.$phrase);
}

Lassen Sie mich wissen, ob Sie eine Idee haben. Vielen Dank.

War es hilfreich?

Lösung

Von dem Phass -Artikel aus dieser Seite verlinkt:

Neben dem tatsächlichen Hashing erzeugt Phass transparent zufällige Salze, wenn ein neues Kennwort oder eine neue Passphrase Hashed ist, und es codiert den Hash -Typ, das Salz und die Kennwortdeting -Iterationszahl in die "Hash -Codierungszeichenfolge", die es zurückgibt. Wenn Phass ein Kennwort oder eine Passphrase gegen einen gespeicherten Hash authentifiziert, extrahiert und verwendet es den Hash -Typ -Kennung, das Salz und die Iteration aus der "Hash -Codierungszeichenfolge". Daher müssen Sie sich nicht mit dem Salzen und Dehnen von selbst beschäftigen - Phass kümmert sich um diese für Sie.

... also ist es nicht überraschend, dass die Beispiele kein Salzen verwenden! Sie können Ihren Code übertrieben.

Die Code-Probe mit dem Dummy-Salz ist ein Beispiel dafür, wie ein Timing-Angriff verhindern kann, indem sichergestellt wird Benutzer. Es braucht ein Dummy -Salz, denn wenn der Benutzer nicht existiert, muss kein gespeichertes Salz verwendet werden.

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