Frage

Unter der Annahme, wir ein Salz haben, die in der Datenbank ist, und das hat wie diese erzeugt worden

$salt = time();

Was ist der Unterschied zwischen diesen zwei Linien.

$pass1 = hash('sha1', $password . $salt);

$pass2 = hash_hmac('sha1', $password, $salt);

Sie erzeugen nicht die gleiche Leistung. Die erste, die Funktion übernimmt hash 2 params, während die hash_hmac 3 params muss. Sie würden denken daher, dass wir das dritte zusätzliche param unter Verwendung der $salt separat bekommen (die dritte param zu erfüllen) im Gegensatz es mit dem Passwort ($password . $salt) zu verketten, wie wir in Linie taten 2. Aber es ist nicht so einfach, das 2 Ergebnisse sind unterschiedlich. Warum? Was ist auf genau geht hier vor?

War es hilfreich?

Lösung

Da HMAC SHA-1 nicht das gleiche wie SHA-1 mit der Nachricht und Schlüssel verketteten ist. HMAC ist mehr wie sha1($salt . sha1($salt . $password)), aber nicht genau. Wikipedia hat eine schöne Beschreibung von HMAC .

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