Guten Tag Zusammen,
ich hab grade ein Problem, zudem ich keine Richtige Lösung finde. Auch
Google etc. war bis dato erfolglos.
Hier das Problem:
Ich habe eine Datenbank mit einem Joomla CMS. In Joomla werden die
Benutzer-Passwörter per BCrypt verschlüsselt. Ich möchte nun in einer C#
Applikation diese Tabelle nutzen um damit ein Login zu errichten. Dazu
kommt BCrypt.NET zum Einsatz. (https://bcrypt.codeplex.com/)
Hierbei gehe ich nun So vor:
1 | //Daten aus Joomla: $2y$10$aBoeOIfm6uHL71GMNhxoget9YlBI8/JMKyt95x/RmsP2FVHMboruG
|
2 | string myPassword = "12345"; //Passwort nicht verschlüsselt
|
3 |
|
4 | string mySalt = BCrypt.Net.BCrypt.GenerateSalt();
|
5 | mySalt = "$2y$10$aBoeOIfm6uHL71GMNhxoge"; //Das Salt (29.Erste Zeichen)
|
6 |
|
7 | string myHash = BCrypt.Net.BCrypt.HashPassword(myPassword, mySalt);
|
8 |
|
9 | bool doesPasswordMatch = BCrypt.Net.BCrypt.Verify(myPassword, myHash);
|
Wenn ich das ausführe bekomme ich von der BCrypt.NET Lib. eine "Invalid
salt revision" Exception.
Jetzt ist mir aufgefallen, das Joomla hier den BCrypt Algorithmus mit
"$2y$" Auswählt. Dies ist laut vielen Aussagen
(https://pythonhosted.org/passlib/lib/passlib.hash.bcrypt.html)
äquivalent zu "$2a$" was der momentane Standard ist.
Wenn ich jetzt aber im Code das Salt ändere:
1 | mySalt = "$2a$10$aBoeOIfm6uHL71GMNhxoge"; //Das Salt (29.Erste Zeichen)
|
Gibt mir die BCrypt.Verify(myPassword, myHash); ständig True zurück...
Hat sich jemand schon mal damit auseinander gesetzt und eine Lösung
gefunden? Bzw. ist mein Gedanke bei der Vorgehensweise falsch?
Mit freundlichen Grüßen
Dominik