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
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%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.
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%Tags und Links ruby asp.net ruby-on-rails base64 sha1