2008-11-10 46 views
173

bCrypt's javadoc có mã này cho làm thế nào để mã hóa mật khẩu:Tôi có cần lưu trữ muối bằng bcrypt không?

String pw_hash = BCrypt.hashpw(plain_password, BCrypt.gensalt()); 

Để kiểm tra xem một mật khẩu chữ thô phù hợp với một đã được băm trước đó, sử dụng phương pháp checkpw:

if (BCrypt.checkpw(candidate_password, stored_hash)) 
    System.out.println("It matches"); 
else 
    System.out.println("It does not match"); 

Những đoạn mã hàm ý với tôi rằng muối được tạo ra ngẫu nhiên bị vứt đi. Đây có phải là trường hợp, hay đây chỉ là một đoạn mã gây hiểu lầm?

Trả lời

201

Muối được kết hợp vào băm (được mã hóa theo định dạng kiểu base64).

Ví dụ, trong mật khẩu Unix truyền thống, muối được lưu trữ làm hai ký tự đầu tiên của mật khẩu. Các ký tự còn lại biểu diễn giá trị băm. Chức năng kiểm tra biết điều này, và kéo băm ra ngoài để lấy muối ra ngoài.

+58

Muối được kết hợp trong mật khẩu. Vì vậy, bạn không cần phải tiết kiệm muối. –

+2

Cảm ơn vì điều đó. Tôi muốn họ nói rằng trong javadoc :) (Tôi đã nhìn vào nguồn và xác nhận - nhưng tôi không biết những gì tôi đang tìm kiếm trước) – RodeoClown

+3

Cảm ơn - không bao giờ được đề cập trong tài liệu Python hoặc. –

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