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

Common uses

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.

Bài viết: Hash/Mật mã

Hash Generator: MD5, SHA-1 và SHA-256 khác nhau ở điểm nào

Vì sao MD5 vẫn được dùng để kiểm tra tính toàn vẹn của tệp, nhưng không dùng cho mật khẩu.

Checksum Verifier: cách kiểm tra một tệp có bị hỏng hay không

Vì sao checksum trùng khớp xác nhận tính toàn vẹn của một tệp, nhưng không xác nhận ai đã tạo ra nó.

HMAC: hash có khóa khác gì so với hash thông thường

Vì sao SHA-256 thông thường không bảo vệ khỏi việc giả mạo tin nhắn, nhưng HMAC thì có.

UUID: cách tạo ra định danh gần như không bao giờ trùng lặp

Vì sao UUID v4 có thể được tạo độc lập trên hàng triệu máy mà không có nguy cơ trùng lặp.

Trình tạo mật khẩu: điều gì thực sự làm cho mật khẩu mạnh

Vì sao mật khẩu dài gồm các từ trong từ điển mạnh hơn mật khẩu ngắn có ký hiệu và số.

AES: mã hóa đối xứng hoạt động như thế nào

Vì sao cùng một khóa vừa mã hóa vừa giải mã dữ liệu trong AES, và điều này khác gì với mã hóa bất đối xứng.

Argon2: vì sao thuật toán này giành chiến thắng cuộc thi băm mật khẩu

Argon2 phòng thủ trước các cuộc tấn công bằng GPU tốt hơn các thuật toán băm mật khẩu cũ như thế nào.

Scrypt: vì sao thuật toán cần nhiều bộ nhớ đến vậy

Vì sao scrypt cố ý đòi hỏi nhiều bộ nhớ để gây khó khăn cho việc dò trên thiết bị ASIC.

TOTP: mã dùng một lần trong ứng dụng xác thực hoạt động như thế nào

Vì sao mã trong Google Authenticator hoạt động không cần internet và chỉ đồng bộ với máy chủ qua thời gian.

PBKDF2: tiêu chuẩn kéo giãn khóa lâu đời nhất

Vì sao số lần lặp khuyến nghị của PBKDF2 tăng lên mỗi năm.

X.509: bên trong một chứng chỉ SSL có gì

Trình duyệt kiểm tra chính xác điều gì trong chứng chỉ của một trang web trước khi hiển thị ổ khóa xanh.

PGP: mã hóa bằng khóa công khai và khóa riêng hoạt động như thế nào

Vì sao có thể chia sẻ tự do khóa công khai PGP, nhưng không bao giờ chia sẻ khóa riêng.