Hash pass trong java

Các bác cho em hỏi là khi mà hash pass sử dụng Bcrypt thì em gặp trường hợp là mỗi lần hash nó lại cho ra chuỗi khác nhau, lần đầu nhập đăng kí vào thì nó hash ra một chuỗi rồi em lưu vào database, sau đó lúc đăng nhập thì nó lại hash ra một chuỗi khác không giống với database, em xin cách khắc phục ạ.

Bạn ơi, up đoạn code bạn hash password lên cho mình xem với bạn, mình cũng đang làm cái này, với lại cho mọi người dễ hỗ trợ nữa !

Hiển nhiên là chuỗi hash của cậu sẽ khác nhau nếu cậu sử dụng Bcrypt rồi Thành :smiley: Đó là design của Bcrypt.
Theo wiki:

For example, the shadow password record $2a$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy specifies a cost parameter of 10, indicating 210 key expansion rounds. The salt is N9qo8uLOickgx2ZMRZoMye and the resulting hash is IjZAgcfl7p92ldGxad68LJZdL17lhWy . Per standard practice, the user’s password itself is not stored.

Các thành phần của hashed password bằng bcrypt ở đây:

$2a$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy
|  |  |                      |___ the hash
|  |  |__ the salt
|  |__ the cost parameter
|___ the version

Để so sánh Bcrypt password, thường thì thư viện Bcrypt mà cậu dùng sẽ có hàm compare hash hay gì đó tương tự. Cậu nên đọc kỹ document và cách sử dụng thư viện đó của cậu.

5 Likes

Vâng cảm ơn ạ mình làm được rồi

1 Like

Nó đang làm đúng mà. đừng nói là đang muốn hash ra chuỗi giống y rồi so dưới db nhé :v

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?