21

Tôi là một bit mới để chơi khuôn khổ và băm mật khẩu. Tôi đã cố gắng tìm một số giải pháp để băm mật khẩu của mình và tôi đã tìm thấy BCrypt. Bạn có nghĩ rằng đó là đủ tốt để băm mật khẩu. Và nếu nó tốt, làm thế nào tôi có thể làm cho nó hoạt động trong khung chơi? (Tôi đang sử dụng trò chơi 2.1.3) Cảm ơn!Làm thế nào để băm mật khẩu trong khung chơi (có thể với BCrypt)

Trả lời

40

Dưới đây là một dự án Chơi Java mẫu tôi đã viết có sử dụng bcrypt để băm mật khẩu, xem các hành động newuser() và đăng nhập():

https://github.com/jroper/play-demo-twitbookplus/blob/master/app/controllers/UserController.java

Bạn có thể làm tương tự tại Scala. Để tóm tắt, thêm jbycrpt để phụ thuộc của bạn trong Build.scala:

val appDependencies = Seq(
    "org.mindrot" % "jbcrypt" % "0.3m" 
) 

mật khẩu Sau đó băm sử dụng này:

String passwordHash = BCrypt.hashpw(password, BCrypt.gensalt()); 

Và xác minh mật khẩu sử dụng này:

BCrypt.checkpw(password, passwordHash) 
+1

nếu BCrypt tạo băm bằng muối, bạn cần thêm muối vào mẫu Người dùng, phải không? Không có trường nào cho "muối" trong ví dụ của bạn. –

+4

Không, BCrypt bao gồm muối đồng bằng trong giá trị mà nó xuất ra. Tôi không chắc chắn 100% định dạng, nhưng nó sẽ là một cái gì đó dọc theo dòng "randomsalthere: saltedhashhere". Vì vậy, nó chỉ cần phân tích cú pháp giá trị đầu tiên, trích xuất muối và băm ra, và sau đó nó có cả băm và muối để kiểm tra mật khẩu. –

Các vấn đề liên quan