Hash/Mật mã
PBKDF2 Hash + Verify
Suy ra khóa bằng PBKDF2 (RFC 8018) từ mật khẩu, HMAC-SHA1/256/384/512, với số vòng lặp có thể tùy chỉnh.
PBKDF2 (RFC 8018) applies HMAC to a password and salt repeatedly to deliberately slow down computation — it's the oldest of the standardized algorithms for password hashing and encryption key derivation.
How to use it
- Derive: enter a password, pick an HMAC algorithm (SHA-1/256/384/512), and set the iteration count to get a derived key of the requested length.
- Verify: paste a password and an existing PBKDF2 hash to check whether they match, without recomputing it manually.
- More iterations means slower, more secure computation — tune the value to your server's response-time budget.
Common uses
- Deriving an encryption key from a user's password for a file container or a custom protocol.
- Checking a PBKDF2 implementation for compatibility across programming languages (the parameters must match exactly).
- Hashing passwords in systems that require a FIPS-compliant algorithm (PBKDF2 is NIST-approved).
Things to keep in mind
Unlike bcrypt and Argon2, PBKDF2 isn't memory-hard — it only requires CPU time, so it's less resistant to attacks on GPUs with many parallel compute units.
The recommended iteration count rises over time in NIST and OWASP guidance as hardware gets faster — check against current recommendations periodically.
Bài viết về công cụ này: PBKDF2: tiêu chuẩn kéo giãn khóa lâu đời nhất
Câu hỏi thường gặp
PBKDF2 khác bcrypt hay Argon2 như thế nào trong việc băm mật khẩu?
PBKDF2 áp dụng lặp lại một hàm băm HMAC để làm chậm brute-force, nhưng khác với bcrypt hay Argon2, nó không tốn nhiều bộ nhớ, khiến việc bẻ khóa bằng GPU tương đối rẻ hơn. Nó vẫn được dùng rộng rãi và được FIPS chấp thuận, nhưng Argon2 thường được ưu tiên cho hệ thống mới.
Số lần lặp kiểm soát điều gì, và nên cao đến mức nào?
Số lần lặp quy định hàm băm cơ bản được áp dụng bao nhiêu lần, đánh đổi trực tiếp tốc độ lấy khả năng chống brute-force. Hướng dẫn hiện tại khuyến nghị hàng trăm nghìn lần lặp cho SHA-256, tăng dần theo thời gian khi phần cứng nhanh hơn.
Vì sao PBKDF2 cần salt?
Salt đảm bảo các mật khẩu giống hệt nhau tạo ra đầu ra khác nhau, ngăn kẻ tấn công dùng bảng rainbow tính sẵn và buộc họ phải tấn công từng hash riêng lẻ.
Hàm băm cơ sở mà PBKDF2 sử dụng có quan trọng không?
Có. Các triển khai cũ thường mặc định dùng HMAC-SHA1 — trong cấu trúc HMAC đây không phải lỗ hổng nghiêm trọng, nhưng các khuyến nghị hiện đại đều đề xuất HMAC-SHA256 hoặc mạnh hơn để có biên độ an toàn lớn hơn mà không làm giảm tốc độ đáng kể.
PBKDF2 còn được dùng ở đâu ngoài việc lưu trữ mật khẩu?
PBKDF2 được sử dụng rộng rãi để suy ra khóa mã hóa từ mật khẩu — ví dụ trong WPA2/WPA3 cho Wi-Fi và trong nhiều định dạng container tệp được mã hóa.