Erneutes Implementieren der ASP.NET-Mitgliedschaft und des Benutzerkennworts in Ruby

8

Ich habe eine große Datenbank von Benutzern (~ 200.000), die ich von einer ASP.NET-Anwendung in eine Ruby on Rails-Anwendung übertrage. Ich möchte wirklich nicht jeden Benutzer bitten, sein Kennwort zurückzusetzen und so versuche ich, die C # Kennworthashingfunktion in Ruby neu zu implementieren.

Die alte Funktion ist dies:

%Vor%

Ein Beispiel Hash-Passwort und Salz ist (und das Passwort war "Passwort"):

Hash-Passwort: "weeEWx4rhyPtd3kec7usysxf7kpk=" Salz: "1ptFxHq7ALe7yXIQDdzQ9Q ==" Passwort: "Passwort"

Jetzt mit dem folgenden Ruby-Code:

%Vor%

Ich bekomme nicht den korrekten Passwort-Hash (ich bekomme "+ BsdIOBN / Vh2U7qWG4e + O13h3iQ=" anstelle von "weeEWx4rhyPtd3kec7usysxf7kpk="). Kann jemand sehen, was das Problem sein könnte?

Vielen Dank

Arfon

    
arfon 09.02.2009, 22:52
quelle

4 Antworten

8

Nur ein kurzes Update, ein Kollege von mir hat das gelöst:

%Vor%     
arfon 11.02.2009, 11:56
quelle
3

Ich wurde beauftragt, eine bestehende .NET-Anwendung zu Ruby on Rails zu migrieren. Ich verwende den folgenden Code, um das .NET-Passwort-Hashing nachzuahmen. Ich bin sehr neu in Ruby und kenne .NET überhaupt nicht. Der Code ist möglicherweise nicht so sauber, wie es könnte, aber es ist ein Anfang.

Zum Testen speichern Sie dies als Ruby-Skript und führen Sie mit:

Ruby-Skript plain_text_password salt_in_base64

z.B.

ruby ​​dotNetHash.rb passwort123 LU7hUk4MXAvlq6DksvP9SQ ==

%Vor%     
Simon Irwin 18.11.2011 15:11
quelle
2

Sie sind ziemlich nah dran. Leider hat Ruby momentan keine integrierte Unicode-Unterstützung und Ihre Hashing-Funktion beruht darauf. Es gibt Problemumgehungen. Schauen Sie sich die Seite an, wie Sie Unicode in Ruby machen können. BTW, ich glaube, Sie haben vergessen, Base64 das Salz zu decodieren, es sieht aus wie die ASP.net-Funktion tut das.

    
Aram Verstegen 09.02.2009 23:11
quelle
1

Sie müssen das Salz entschlüsseln, um es zurück in seine Byte-Darstellung zu konvertieren, und es dann mit dem Passwort verketten, um den Hash-Passwortwert zu erhalten. Du verwendest die codierende Salzzeichenkette direkt (was ein anderes Salz ist) und daher hashst du etwas anderes.

%Vor%     
tvanfosson 09.02.2009 23:01
quelle