Ich setze mein Passwort "13579" und die Formulare für den Authentifizierungsmodus konvertieren es wie "mEXg8klnq0TwPFvAqytULA ==" in MD5, aber nach einigen Minuten versuche ich es erneut und erstelle ein weiteres mit dem gleichen Passwort "13579", aber es konvertiert zu einem anderen wie "uM4gH8HO8cvoE0slg6OyKA ==" Wie ist die Struktur von MD5? Bezieht es sich auf meinen Benutzernamen und meine Zeit? Ich möchte das gleiche Passwort für meine Benutzer erstellen, damit ich nicht dasselbe Passwort erstellen kann, wenn es von der Zeit abhängt.
Ihr Kennwort wird vom ASP.NET-Mitgliedschaftsanbieter gesalzen. - Sehen Sie sich Ihre Datenbank an. In der Tabelle "Benutzer" befindet sich eine Spalte, die das Salz enthält. Provider generiert das Salz für jeden Benutzer und speichert es in der Tabelle. Dieses Salz wird dann verwendet, um das Passwort zu verschlüsseln. Da jeder Benutzer einen anderen Salt-Wert hat, ist das gleiche Passwort im Klartext anders, wenn es verschlüsselt wird.
Sie möchten den Anbieter wahrscheinlich ohne Salting verwenden - versuchen Sie, nach "ASP.NET-Mitgliedschaftsanbieter kein Salz" zu googlen, aber Sie werden wahrscheinlich Ihren eigenen Anbieter ablehnen. Ich glaube nicht, dass es in web.config eine Option für die Providereinstellungen gibt, um das Aussalzen auszuschalten.
MD5 ist ein deterministischer Algorithmus, daher haben Sie wahrscheinlich "gesalzene Hashes". Das bedeutet, dass einige Zeichenfolgen oder andere Daten (z. B. ein Zeitstempel) im Kennwort als "Salz" codiert sind, um es zu verstärken.
Achten Sie in der Datenbank auf eine Datenbankspalte mit dem Namen salt, und überprüfen Sie die md5-Ergebnisse Ihres Passworts mit einem Zeitstempel für das Erstellungsdatum, um das Salz zu finden.
Diese letzte Form ist nicht MD5, sondern BASE-64, ein MD5-Hash sieht so aus: 9e107d9d372bb6826bd81d3542a419d6
MD5 sollte in der Tat den gleichen Hashwert bei den gleichen Eingabeparametern erzeugen, aber ohne spezifische Implementierungsdetails ist es schwer zu sagen, was den Unterschied verursachen würde, den Sie sehen.
Es ist meistens wahrscheinlich eine Art von Salzwert, der sich ändert, wenn Sie sich nicht sicher sind, was ein Salzwert ist, siehe hier .
Sie sehen diese == Zeichen am Ende der Zeichenketten .. das ist für Base64 konvertierte Zeichenkette.und = Zeichen wird für das Auffüllen verwendet.
Wie für die Zeichenfolge, die Sie erhalten. Es ist anders , da der ASP.Net-Mitgliedschaftsanbieter jedem anderen Benutzer ein anderes Salt zuordnet , sodass Sie unterschiedliche Hashes erhalten, selbst wenn der Benutzername identisch ist.
Aber trotzdem, wenn Sie für beide Benutzer das gleiche Passwort festgelegt haben, können Sie sich mit demselben Passwort anmelden .. weil intern der Mix von Salt und dasselbe Passwort passen Sie immer den jeweiligen Hashes an.
Die Ergebnisse von MD5 sind konsistent, aber Sie werden wahrscheinlich feststellen, dass der Benutzername auch verwendet wird. Der Unterschied liegt also an den verschiedenen Nutzernamen. (Die Zeit wäre nicht nützlich, weil Sie das Hash-Passwort nicht mit irgendetwas vergleichen könnten).