Ich versuche, die Authentifizierung mit BCrypt in meinem Play 2.1 zu implementieren. Java-Anwendung, aber ich bekomme Invalid salt version exception
, wenn ich versuche, den Benutzer zu authentifizieren.BCrypt.checkpw() Ungültige Salz Version Ausnahme
Das ist mein Stack-Trace
play.api.Application$$anon$1: Execution exception[[IllegalArgumentException: Invalid salt version]]
at play.api.Application$class.handleError(Application.scala:289) ~[play_2.10.jar:2.1.0]
at play.api.DefaultApplication.handleError(Application.scala:383) [play_2.10.jar:2.1.0]
at play.core.server.netty.PlayDefaultUpstreamHandler$$anon$2$$anonfun$handle$1.apply(PlayDefaultUpstreamHandler.scala:132) [play_2.10.jar:2.1.0]
at play.core.server.netty.PlayDefaultUpstreamHandler$$anon$2$$anonfun$handle$1.apply(PlayDefaultUpstreamHandler.scala:128) [play_2.10.jar:2.1.0]
at play.api.libs.concurrent.PlayPromise$$anonfun$extend1$1.apply(Promise.scala:113) [play_2.10.jar:2.1.0]
at play.api.libs.concurrent.PlayPromise$$anonfun$extend1$1.apply(Promise.scala:113) [play_2.10.jar:2.1.0]
java.lang.IllegalArgumentException: Invalid salt version
at org.mindrot.jbcrypt.BCrypt.hashpw(BCrypt.java:664) ~[jbcrypt-0.3m.jar:na]
at org.mindrot.jbcrypt.BCrypt.checkpw(BCrypt.java:763) ~[jbcrypt-0.3m.jar:na]
at model.operations.DistrictOperations.authenticate(DistrictOperations.java:24) ~[na:na]
at controllers.Application.authenticateDistrict(Application.java:26) ~[na:na]
at Routes$$anonfun$routes$1$$anonfun$applyOrElse$2$$anonfun$apply$2.apply(routes_routing.scala:133) ~[na:na]
at Routes$$anonfun$routes$1$$anonfun$applyOrElse$2$$anonfun$apply$2.apply(routes_routing.scala:133) ~[na:na]
Ich folge Maven-Repository mit: wird http://mvnrepository.com/artifact/org.mindrot/jbcrypt/0.3m
Mein Code auf der Dokumentation basiert, so
district.setPassword(BCrypt.hashpw(json.findPath("password").getTextValue(), BCrypt.gensalt()));
Für das Passwort speichern (Ich überprüfe auch das Passwort, um Null zu sein)
BCrypt.checkpw(password, d.getPassword());
Zur Überprüfung, ob das eingegebene Passwort korrekt ist, wobei das Passwort String ist und d.getPassword() ein Hash-Passwort hat.
Ich weiß nicht, ob dies relevante Informationen sind, aber um genau zu sein verwende ich Hibernate für ORM und PostgreSQL 8.4 als DB.
Ich bin irgendwie hier drin stecken, also frage ich, ob mir jemand helfen könnte. Als Sie sehr im Voraus.
Insbesondere: das Salz JBCrypt erwartet Salz Version 2a, also ein Salz beginnend mit $ 2a $. Wenn Sie eine andere BCrypt-Version verwenden, die eine modernere Salzversion 2y oder 2b verwendet - JBCrypt löst eine Ausnahme aus. – daphshez