Bcrypt Hash 🔒 Chạy ngay trong trình duyệt — không tải lên bất cứ thứ gì.

Băm mật khẩu bằng bcrypt, hoặc kiểm tra mật khẩu với một hash.

 

Về công cụ này

Bcrypt là hàm băm mật khẩu được thiết kế cố tình chậm, và đó chính là điều bạn muốn: nó làm việc dò brute-force trở nên tốn kém. Cost factor cho phép tăng độ chậm đó khi phần cứng nhanh hơn. Dùng tab Hash để biến mật khẩu thành bcrypt hash cho việc seed database test, và tab Verify để kiểm tra một mật khẩu có khớp với hash bạn đã có không.

Nó chạy trong trình duyệt bằng thư viện bcryptjs nên không mật khẩu nào bị gửi lên server. Lưu ý bcrypt dùng để lưu mật khẩu, không phải mã hóa có thể đảo ngược.

Câu hỏi thường gặp

Vì sao nên dùng bcrypt thay vì SHA-256 cho mật khẩu?

SHA-256 rất nhanh — tuyệt vời cho việc kiểm tra tính toàn vẹn của file nhưng lại tệ cho mật khẩu, vì kẻ tấn công có thể thử hàng tỷ lần đoán mỗi giây. bcrypt cố tình được thiết kế chậm và có salt ngẫu nhiên riêng cho mỗi lần băm, khiến việc brute-force hay tấn công bằng rainbow table tính sẵn trở nên bất khả thi.

Con số "cost" (chi phí) nghĩa là gì?

Cost là hệ số công việc theo lũy thừa của 2: mỗi lần tăng thêm 1 sẽ khiến thời gian tính hash tăng gấp đôi. Cost 10 (mặc định) mất khoảng vài chục mili giây; cost 14-15 có thể mất vài giây. Hãy chọn mức cost cao nhất mà server của bạn chịu được cho mỗi lần đăng nhập mà không trở thành nút thắt cổ chai.

Mật khẩu của tôi có được gửi lên server không?

Không. Việc băm và xác minh chạy hoàn toàn trong trình duyệt của bạn, trong một Web Worker nếu có thể, để việc băm với cost 15 không làm đơ tab. Bất cứ điều gì bạn gõ ở đây đều không được truyền đi hay lưu trữ ở bất kỳ đâu.

Vì sao cùng một mật khẩu mà mỗi lần băm bcrypt lại cho kết quả khác nhau?

bcrypt tạo một salt ngẫu nhiên mới mỗi lần bạn băm, và salt đó được nhúng ngay trong chuỗi kết quả ($2b$10$<salt><hash>). Đây là điều bình thường, và chính nó ngăn hai mật khẩu giống hệt nhau tạo ra cùng một hash.

Vì sao xác minh báo lỗi "định dạng hash không hợp lệ" thay vì "không khớp"?

Một hash bcrypt hợp lệ luôn khớp với mẫu $2a/b/x/y$<cost>$<53 ký tự>. Nếu nội dung bạn dán vào không khớp — bị cắt bớt, sai thuật toán, thừa khoảng trắng — đó là một vấn đề khác với mật khẩu sai, nên được báo cáo riêng.