2010-12-01 6 views
1

Wir konvertieren eine ASP-Site (mit DotNetNuke) zu einer neuen PHP-Site. Das einzige, was wir gerade haben, ist ein vollständiger Export der bestehenden Datenbank. Eine der Tabellen ist "aspnet_Membership" genannt und enthält folgende Felder:MembershipProvider.GetPassword-Algorithmus

  • Passwort (sieht aus wie base64)
  • Passwordformat (immer Wert 2)
  • PasswordSalt (sieht aus wie base64)
  • Password (immer leer)
  • Password (immer leer)

Wir möchten diese Passwörter entschlüsseln und Hash sie unsere passen eigener Rahmen. Wie ich aus der .NET-Dokumentation verstehe, können diese Art von Passwörtern entschlüsselt werden. Gibt es einen Algorithmus, der das kann oder ist er komplizierter? Wird es möglich sein, wenn wir ein ASP-Skript auf dem aktuellen Server erstellen?

Vielen Dank im Voraus

+0

Ok Dank Ihrer Antworten ojb und vor allem Simon, konnte ich den Inhalt von Web.config abrufen, so dass wir jetzt die Entschlüsselung und validationKey haben. Die Verschlüsselungsmethode ist auf "3DES" eingestellt. Ruft das irgendwelche Glocken? Ich denke, es sollte möglich sein, es jetzt mit PHP mcrypt zu entschlüsseln, aber ich kann nicht scheinen, die richtigen Parameter herauszufinden. – dirkbonhomme

+0

Hmmm .... weiß nicht, ob Sie das mit PHP machen können. Unter Verwendung von .NET denke ich, dass Sie den Mitgliedschaftsprovider mit der GetPassword-Methode wiederverwenden können: new SqlMembershipProvider(). GetPassword (username, passwordAnswer); –

+0

@Simon Mourier ist in allen seinen Punkten richtig. Sie benötigen den ursprünglichen Computerschlüssel, die SqlMembershipProvider.GetPassword-Methode funktioniert, es gibt auch eine MembershipUser.GetPassword-Methode, für die der Antwortparameter nicht erforderlich ist. Schließlich überprüfte ich eine meiner Datenbanken, die Verschlüsselung verwendet und das PasswordFormat-Feld ist 2. – ScottS

Antwort

3

I 2 denken bedeutet „Verschlüsselt“, nicht „Hash“ (siehe Definition here)

Encrypted bedeutet, dass Sie es tatsächlich entschlüsseln kann, aber Sie werden die Computerschlüssel in Konfigurationsdateien (werfen Sie einen Blick auf die gespeicherte müssen Link, den ich gesendet habe) der physischen Maschine, auf der diese Passwörter erstellt wurden. Wenn Sie nur eine Kopie der Datenbank haben, können Sie das nicht tun.

2

Leider teilt Ihrem Wert von 2 in Password uns, dass diese Passwörter gehasht werden, vermutlich SHA1 (Sie können dies in Ihrer web.config überprüfen). Es gibt keine Möglichkeit, das ursprüngliche Passwort zuverlässig wiederherzustellen, tut mir leid.

* bearbeiten: es sei denn, Sie sind sich einer bestimmten kryptografischen Schwäche in der jeweiligen Hash-Funktion bewusst.

+0

Wow, ja, eigentlich Simon Mourier (unten) hat Recht etwa 2 Bedeutung "verschlüsselt", vorausgesetzt, Sie sind auf .NET 3.5 oder höher. Ich kann Reflector im Moment nicht zur Überprüfung bringen, aber anscheinend haben sie die Reihenfolge der Aufzählung zwischen den Versionen geändert. – ojb