Sinh chuỗi băm mật khẩu an toàn bằng thuật toán bcrypt với salt ngẫu nhiên và rounds tùy chỉnh.
Features
- Hash an toàn: Thuật toán bcrypt với cost thích ứng giúp bảo vệ khỏi brute force
- Hai chế độ: Băm mật khẩu mới hoặc xác minh hash hiện có
- Điều chỉnh rounds: Thiết lập cost từ 4 đến 31 tương ứng nhu cầu bảo mật
- Salt tự động: Sinh salt ngẫu nhiên cho từng hash, chống rainbow Bảng
Usage Guide
- Nhập mật khẩu hoặc hash: Điền mật khẩu cần băm hoặc hash cần kiểm tra đúng ô, bảo đảm không dán nhầm dữ liệu nhạy cảm khác.
- Thiết lập rounds: Chọn hệ số cost phù hợp (gợi ý ≥10). Cost càng cao càng an toàn nhưng thời gian xử lý lâu hơn, hãy cân nhắc nhu cầu thực tế.
- Thực thi thao tác: Nhấn "Tạo hash" để sinh chuỗi bcrypt hoặc "Xác minh" để so sánh mật khẩu với hash hiện có. Quá trình xử lý hoàn toàn offline.
- Sao chép và lưu trữ: Sao chép hash đã sinh, lưu vào cơ sở dữ liệu an toàn và tránh ghi log mật khẩu dạng rõ.
Technical Details
Bcrypt hoạt động như thế nào
Bcrypt do Niels Provos và David Mazières thiết kế dựa trên Blowfish. Thuật toán sinh salt ngẫu nhiên 128 bit, áp dụng nhiều vòng key setup tốn thời gian nhằm làm chậm brute force, kể cả khi chạy trên GPU hoặc ASIC chuyên dụng.
Work factor thích ứng
Tham số rounds (2^cost) quy định thời gian xử lý. Khi phần cứng mạnh hơn, bạn có thể tăng cost định kỳ để duy trì mức bảo mật và giữ thời gian băm ổn định trong khoảng 250-500 ms.
Cấu trúc hash tự mô tả
Hash bcrypt lưu cả phiên bản, cost và salt trong chuỗi xuất ra (định dạng $2b$10$salt$hash), giúp xác minh dễ dàng mà không cần lưu thêm metadata hoặc quản lý salt thủ công.
Frequently Asked Questions
- Vì sao nên dùng bcrypt?
- Bcrypt được thiết kế để băm mật khẩu với chi phí tính toán cao, khó bị brute force và tự sinh salt chống rainbow Bảng. Đây là khuyến nghị của OWASP/NIST.
- Rounds nghĩa là gì?
- Rounds (cost) quy định số vòng xử lý, mỗi lần tăng làm thời gian gấp đôi. Production nên dùng 10-12, hệ thống cần bảo mật hơn có thể dùng 14-16.
- Vì sao cùng mật khẩu nhưng hash khác nhau?
- Mỗi hash bcrypt chứa salt ngẫu nhiên riêng nên kết quả luôn khác biệt. Điều này giúp vô hiệu hóa bảng tra cứu sẵn.
- Có thể đảo ngược hash bcrypt không?
- Không. Bcrypt là hàm một chiều, chỉ có thể xác minh bằng cách băm lại mật khẩu với salt lưu kèm trong hash.
- Bcrypt có dùng được cho production không?
- Có. Bcrypt được hỗ trợ rộng rãi (Node.js, Python, PHP, Java...). Hãy đảm bảo dùng HTTPS, rounds đủ lớn và quản lý cơ sở dữ liệu an toàn.
Related Documentation
- Tổng quan bcrypt trên Wikipedia - Giới thiệu chi tiết thuật toán bcrypt và lịch sử phát triển
- OWASP Password Storage - Hướng dẫn lưu trữ mật khẩu an toàn với bcrypt/Argon2
- Thư viện jBCrypt - Thư viện Java triển khai bcrypt chuẩn để tích hợp hệ thống doanh nghiệp
- Đặc tả thuật toán Blowfish - Tài liệu chi tiết Blowfish – nền tảng của bcrypt
- NIST SP 800-63B - Khuyến nghị nhận dạng số và lưu mật khẩu của NIST