Heim  >  Artikel  >  Backend-Entwicklung  >  Beispielanalyse für den PHP-Benutzerkennwortverschlüsselungsalgorithmus

Beispielanalyse für den PHP-Benutzerkennwortverschlüsselungsalgorithmus

墨辰丷
墨辰丷Original
2018-06-01 10:00:121453Durchsuche

In diesem Artikel wird hauptsächlich der PHP-Benutzerkennwortverschlüsselungsalgorithmus vorgestellt, das Prinzip des Discuz-Verschlüsselungsalgorithmus detaillierter analysiert, die Implementierungsmethode des .net-Algorithmus anhand von Beispielen verglichen und der Prozess und die Implementierungsmethode der Benutzerverschlüsselung zusammengefasst PHP. Freunde in Not können sich an

Als ich heute Discuz für die Sekundärentwicklung verwendete, musste ich den Discuz-Benutzernamen und das Passwort im Code überprüfen, bin aber versehentlich in eine Falle geraten, weil das Discuz-Forum zwei hatte Um Benutzerdaten zu speichern, befindet sich eine in pre_common_member in der Datenbank ultrax von Discuz und die andere in der Tabelle uc_members in der Datenbank ucenter von UCenter. Ich habe viel Zeit damit verbracht, die pre_common_member-Daten in der Ultrax-Bibliothek zu studieren und zu untersuchen, wie ihr Passwort generiert wurde. Nach der Suche fand ich einen Salt, der angeblich zufällig im Internet generiert wurde

und ich dachte darüber Wie kann ich das zufällig generierte Salt beim Anmelden überprüfen? Dann hieß es online, dass Discuz dieses Passwort überhaupt nicht verwendet habe, und tatsächlich konnte ich mich auch dann normal anmelden, wenn ich das Benutzerpasswort in pre_common_member änderte. Es schien, dass dieses Passwort nutzlos war überhaupt, was dazu führte, dass ich einen großen Umweg machte.

Okay, kommen wir zum Punkt. Der Passwortverschlüsselungsalgorithmus von Discuz besteht eigentlich aus zwei MD5-Verschlüsselungen. Zuerst einmal mit Klartext verschlüsseln, dann zufällig einen Salt generieren und dann Salt nach dem ersten Chiffriertext als Klartext hinzufügen . Führen Sie die MD5-Verschlüsselung erneut durch. Der Salt wird in der Tabelle uc_members gespeichert und kann über den Benutzernamen abgerufen werden.

So:

MD5(MD5(plaintext)+salt)

Das Folgende ist der Implementierungscode von .net:

string GetDiscuzPWString(string sourceStr, string salt)
{
   return GetMd5Hash(string.Concat(GetMd5Hash(sourceStr),salt));
}
string GetMd5Hash(string input)
{
  MD5 md5Hasher = MD5.Create();
  byte[] data = md5Hasher.ComputeHash(Encoding.Default.GetBytes(input));
  StringBuilder sBuilder = new StringBuilder();
  for (int i = 0; i < data.Length; i++)
  {
    sBuilder.Append(data[i].ToString("x2"));
  }
  return sBuilder.ToString();
}

Fassen Sie die Methode zur Passwortbeurteilung zusammen:

① So ​​installieren Sie UC

② Öffnen Sie die Datenbank und suchen Sie die uc_members-Tabelle, suchen Sie nach dem letzten A-Feld „salt“, kopieren Sie den Wert hinein

③ Pseudocode:

$s=md5(md5("密码")."salt字段的值");
echo $s;

④ Verwenden Sie IF, um Richter

⑤ Sag es noch einmal! Diese Zufallszahl besteht aus 6 Ziffern!

Zusammenfassung: Das Obige ist der gesamte Inhalt dieses Artikels, ich hoffe, dass er für das Studium aller hilfreich sein wird.

Verwandte Empfehlungen:

Detaillierte grafische Erklärung der PHP-Speicher-Caching-Funktion memcached

PHP gekapselt Fall der Smarty-Klasse 🎜>

Das obige ist der detaillierte Inhalt vonBeispielanalyse für den PHP-Benutzerkennwortverschlüsselungsalgorithmus. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn