Tôi đang cố triển khai xác thực bằng cách sử dụng BCrypt, trong Play 2.1 của tôi. Ứng dụng Java, nhưng tôi đang nhận được Invalid salt version exception
khi tôi đang cố gắng xác thực người dùng.BCrypt.checkpw() Ngoại lệ phiên bản muối không hợp lệ
Đây là stack trace tôi
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]
Tôi đang sử dụng kho maven sau: http://mvnrepository.com/artifact/org.mindrot/jbcrypt/0.3m
Mã của tôi được dựa trên các tài liệu, do đó
district.setPassword(BCrypt.hashpw(json.findPath("password").getTextValue(), BCrypt.gensalt()));
Đối với lưu mật khẩu (Tôi cũng đang kiểm tra mật khẩu bị vô hiệu)
BCrypt.checkpw(password, d.getPassword());
Để kiểm tra xem mật khẩu đã nhập có chính xác không, mật khẩu là String và d.getPassword() là mật khẩu được băm.
Tôi không biết đây có phải là thông tin liên quan hay không, nhưng chính xác là tôi đang sử dụng hibernate cho ORM và PostgreSQL 8.4 làm DB.
Tôi bị kẹt ở đây vì vậy tôi hỏi liệu có ai có thể giúp tôi không. Hơn bạn rất nhiều trước.
Cụ thể: muối JBCrypt dự kiến muối phiên bản 2a, do đó muối bắt đầu với $ 2a $. Nếu bạn đã sử dụng phiên bản BCrypt khác sử dụng phiên bản muối hiện đại hơn 2y hoặc 2b - JBCrypt sẽ ném một ngoại lệ. – daphshez