Ich versuche jemand das Passwort zu überprüfen, wenn Sie sich anmelden.2 gleich byte [] kehrt nicht wahr
ich das eingegebene Passwort nehmen und rufen die Nutzer Salz Hash-Passwort und das Passwort gespeichert.
Dann Hash ich das eingegebene Passwort mit dem gespeicherten Salz um zu sehen, ob es gleich dem gespeicherten Passwort ist.
Obwohl das byte [] storedPassword genau wie das byte [] incutedPassword ist, gibt es in einem bool nicht true zurück und überprüft daher den Benutzer nicht. Warum das?
public static bool VerifyPassword(byte[] newPassword, byte[] storedPassword, byte[] storedSalt)
{
byte[] password = CreateHashedPassword(newPassword, storedSalt);
if (!password.Equals(storedPassword))
return false;
return true;
}
Vor diesem Code, würde ich die Länge des Passworts und storedPassword vergleichen. Wenn storedPassword kleiner als das Passwort ist, können Sie nach dem Ende des Arrays lesen. Auf der anderen Seite, wenn das Passwort kürzer ist, vergleicht es nur die ersten paar Bytes. Wenn Sie ein kürzeres Passwort erhalten, könnte es möglich sein, mit einem Präfix des gespeicherten Passworts übereinzustimmen. Jacob – TheJacobTaylor
Im Allgemeinen erzeugen Passwort-Hash-Algorithmen immer die Ausgabe der gleichen Anzahl von Bytes. Zum Beispiel ist ein MD5-Hash immer 16 Byte, so dass die Länge der Hashes nicht überprüft werden muss. – Gabe