Hash/Mật mã
HMAC Generator
Tính HMAC (Hash-based Message Authentication Code) của văn bản hoặc tệp bằng khóa bí mật — cùng lúc tám thuật toán: MD5, SHA-1, SHA-256, SHA-384, SHA-512, SHA3-256, SHA3-512, RIPEMD-160.
HMAC (Hash-based Message Authentication Code) is a hash computed together with a secret key, proving a message hasn't changed and was sent by someone who knows that key. Unlike a plain hash, an HMAC can't be forged without knowing the secret.
How to use it
- Enter text or a file and a secret key — the HMAC is computed instantly with eight algorithms at once (MD5, SHA-1, SHA-2, SHA3, RIPEMD-160).
- Copy the variant you need to verify a signature or compare against an expected value.
- The same input and key always produce the same HMAC — handy for checking against a signature received from another system.
Common uses
- Verifying a webhook signature from a payment service or API (most sign the payload with HMAC-SHA256).
- Generating a request signature for an API that requires HMAC authentication.
- Debugging a mismatched signature — checking the key, input encoding, and algorithm one at a time.
Things to keep in mind
HMAC protects against tampering and confirms the sender's authenticity, but it doesn't encrypt the message itself — the content stays readable.
A mismatched HMAC is most often caused by different data encoding (e.g. JSON field order) or a stray whitespace or line break, not by a bug in the algorithm itself.
Bài viết về công cụ này: HMAC: hash có khóa khác gì so với hash thông thường
Câu hỏi thường gặp
Sự khác biệt giữa HMAC và hash thông thường là gì?
Hash thông thường chỉ chứng minh dữ liệu không bị thay đổi; HMAC còn sử dụng một khóa bí mật, nên chứng minh cả tính toàn vẹn lẫn việc người gửi biết bí mật chung — không có khóa, không ai tạo được HMAC hợp lệ dù biết thuật toán.
Nên chọn thuật toán băm nào cho HMAC?
HMAC-SHA256 là lựa chọn mặc định hiện đại vững chắc. Các lựa chọn cũ như HMAC-MD5 hay HMAC-SHA1 vẫn chưa bị phá vỡ riêng với vai trò HMAC, nhưng SHA-256 trở lên được khuyến nghị cho hệ thống mới.
Khóa bí mật của tôi có được gửi đi đâu không?
Không. HMAC được tính toán hoàn toàn trong trình duyệt của bạn qua Web Crypto API — khóa và thông điệp không bao giờ rời khỏi thiết bị của bạn.
Vì sao không thể so sánh HMAC bằng toán tử so sánh thông thường?
So sánh chuỗi thông thường dừng lại ở khác biệt đầu tiên, và thời gian thực hiện tiết lộ cho kẻ tấn công biết họ đã đoán đúng bao nhiêu ký tự đầu tiên (timing attack). Cần dùng các hàm so sánh trong thời gian không đổi, ví dụ hash_equals trong PHP.
Có thể dùng cùng một khóa cho nhiều mục đích khác nhau không?
Không nên. Nếu cùng một khóa bí mật được dùng để ký webhook và cho mục đích khác, việc một hệ thống bị xâm phạm sẽ tự động làm hệ thống kia bị xâm phạm theo — nên tạo khóa riêng cho từng mục đích cụ thể.