Cách dùng Công cụ tạo & kiểm tra Bcrypt
- Nhập mật khẩu và chọn hệ số cost (thường là 10–12).
- Nhấn Tạo hash; mỗi lần tạo sẽ cho ra một hash khác nhau vì salt được sinh ngẫu nhiên.
- Để kiểm tra mật khẩu, dán mật khẩu và hash đã lưu vào mục Kiểm tra mật khẩu.
Bcrypt là gì?
Bcrypt là hàm băm mật khẩu được thiết kế năm 1999 với chủ đích chạy chậm. Mỗi hash bao gồm một salt ngẫu nhiên 128-bit và một hệ số cost: khối lượng tính toán tăng theo 2cost, nên bạn có thể làm cho việc băm chậm hơn khi phần cứng ngày càng nhanh. Nhờ vậy, việc dò mật khẩu từ các hash bị đánh cắp tốn kém hơn nhiều so với các hàm băm nhanh như MD5 hay SHA-256, vốn không nên dùng riêng lẻ để băm mật khẩu.
Cấu trúc của một hash bcrypt
$2b$12$R9h/cIPz0gi.URNNX3kh2OPST9/PgBkqquzi.Ss7KIUgO2t0jWMUW
│ │ └ salt 22 ký tự └ hash 31 ký tự
$2b$ là phiên bản thuật toán và 12 là hệ số cost. $2a$, $2b$ và $2y$ tạo ra cùng một hash với mật khẩu thông thường; $2y$ là tên mà PHP và Apache sử dụng, còn $2b$ là chuẩn hiện tại của OpenBSD.
Chọn hệ số cost
| Cost | Số vòng lặp | Mục đích |
|---|---|---|
| 4–8 | 16–256 | Chỉ dùng cho unit test |
| 10 | 1.024 | Mặc định phổ biến (Laravel, Node bcrypt) |
| 12 | 4.096 | Lựa chọn tốt cho máy chủ hiện nay (~250 ms) |
| 14+ | 16.384+ | Rất chậm; có thể làm giảm hiệu năng đăng nhập |
Hướng tới khoảng 100–500 ms cho mỗi lần băm trên phần cứng production của bạn. Thời gian hiển thị ở trên được đo trong trình duyệt của bạn và chỉ mang tính tham khảo.
Bcrypt không thể “giải mã”
Bcrypt là thuật toán một chiều: không có khóa nào có thể biến hash ngược lại thành mật khẩu. Việc xác minh hoạt động bằng cách băm mật khẩu cần kiểm tra với salt và cost được lưu trong hash, rồi so sánh kết quả — đúng như cách công cụ kiểm tra này hoạt động. Lưu ý rằng bcrypt bỏ qua mọi thứ sau 72 byte đầu tiên của mật khẩu.
Với file HTTP Basic Auth, hãy dùng công cụ tạo htpasswd; để tạo mật khẩu mạnh, hãy dùng công cụ tạo mật khẩu.
Cũng được tìm dưới tên: tạo hash bcrypt, bcrypt online, kiểm tra bcrypt, bcrypt checker, mã hóa mật khẩu bcrypt, xác minh bcrypt, $2y$ hash.
Các công cụ dùng kèm tốt với Công cụ tạo & kiểm tra Bcrypt
- Tạo mã Hash — Tính mã hash MD5 và SHA cho mọi văn bản hoặc file ngay lập tức, tạo chữ ký HMAC và dán checksum mong đợi để kiểm tra file tải về.
- Tạo HMAC Online — Tính chữ ký HMAC có khóa cho các yêu cầu API và webhook, rồi kiểm tra xem chữ ký nhận được có hợp lệ hay không.
- Kiểm Tra Độ Mạnh Mật Khẩu — Nhập một mật khẩu để xem nó có bao nhiêu tổ hợp có thể, mất bao lâu để bẻ khóa, mẫu nào khiến nó yếu hơn — và nếu muốn, xem nó có xuất hiện trong các vụ rò rỉ dữ liệu đã biết hay không.
- Giải mã JWT — Dán JSON Web Token vào đây để xem header và payload, kiểm tra thời điểm hết hạn và xác minh chữ ký.
Câu hỏi thường gặp
Có thể giải mã một hash bcrypt không?
Vì sao hash lại khác nhau mỗi lần?
$2a$, $2b$ và $2y$ có tương thích với nhau không?
password_verify của PHP chấp nhận cả ba.