Hash/Mật mã
Bcrypt Hash + Verify
Băm mật khẩu bằng bcrypt (với salt ngẫu nhiên và cost có thể tùy chỉnh) và xác minh mật khẩu với mã băm bcrypt đã có.
Bcrypt is a deliberately slow password-hashing algorithm: unlike MD5 or SHA-256, it intentionally requires heavy computation so that brute-forcing passwords stays impractical even if a database of hashes leaks.
How to use it
- Hash: enter a password and set a cost factor — a higher number means slower, more secure hashing.
- Every hash call generates a fresh random salt, so the same password produces a different hash each time — that's expected and normal.
- Verify: paste a password and an existing bcrypt hash to check whether they match, without hashing manually yourself.
Common uses
- Manually checking that a backend hashes passwords correctly before storing them.
- Generating a test bcrypt hash for seed data or fixtures during development.
- Debugging a failed login by comparing an entered password against the stored hash.
Things to keep in mind
Pick a cost factor that keeps hashing around 100-300ms on your target server — a balance between security and login-time load.
Bcrypt truncates passwords longer than 72 bytes — characters beyond that limit are ignored by the algorithm.
Bài viết về công cụ này: Bcrypt: vì sao mật khẩu được băm chậm chứ không nhanh
Câu hỏi thường gặp
Vì sao bcrypt có hệ số "cost" (chi phí) hoặc "rounds"?
Hệ số chi phí kiểm soát số lần băm được lặp lại nội bộ, nên việc băm sẽ chậm đi theo cấp số nhân khi giá trị này tăng. Điều này cho phép bạn cố ý giữ tốc độ đủ chậm để chống lại tấn công brute-force ngay cả khi phần cứng nhanh hơn.
Vì sao hash bcrypt luôn có cùng độ dài bất kể mật khẩu của tôi?
Bcrypt tạo ra hash có độ dài cố định (thường 60 ký tự) mã hóa cùng nhau phiên bản thuật toán, hệ số chi phí, salt và hash — độ dài không phụ thuộc vào độ dài mật khẩu gốc.
Bcrypt có cần một trường salt riêng không?
Không. Salt được tạo tự động và nhúng trực tiếp vào chuỗi đầu ra, nên bạn không cần lưu trữ hay quản lý riêng — nó luôn có mặt khi bạn xác minh mật khẩu với hash.
Bcrypt có giới hạn độ dài mật khẩu không?
Có, bcrypt chỉ xử lý 72 byte đầu tiên của mật khẩu — bất cứ điều gì dài hơn sẽ bị loại bỏ âm thầm mà không có cảnh báo. Trong thực tế điều này hiếm khi là vấn đề, nhưng cần lưu ý khi làm việc với mật khẩu rất dài hoặc ký tự không phải ASCII, nơi một ký tự có thể chiếm nhiều byte.
Vì sao bcrypt vẫn được khuyến nghị dù đã có Argon2?
Bcrypt đã được kiểm chứng qua nhiều thập kỷ sử dụng thực tế, được hỗ trợ rộng rãi trong mọi ngôn ngữ và framework, và vẫn là lựa chọn hoàn toàn đáng tin cậy. Argon2 được khuyến nghị ưu tiên cho hệ thống mới nhờ khả năng chống tấn công bằng GPU/ASIC, nhưng bcrypt không bị coi là không an toàn — chỉ là kém bền hơn trước phần cứng chuyên dụng.