Công cụ tạo HMAC
Tính HMAC-SHA256, SHA-384, SHA-512, SHA-224, SHA-1, MD5, SHA3 hoặc RIPEMD-160 của thông điệp với khóa dạng văn bản, hex hoặc Base64. Kết quả hex hoặc Base64, cập nhật ngay.
HMAC (RFC 2104) trộn khóa vào hàm băm hai lần: H((K ⊕ opad) || H((K ⊕ ipad) || message)). Khóa dài hơn khối của hàm băm sẽ được băm trước. Trên máy chủ, hãy so sánh MAC theo thời gian không đổi.
Tạo HMAC là gì?
Tính mã xác thực thông điệp dùng khóa (HMAC, RFC 2104) cho một thông điệp và khóa bí mật. Hỗ trợ SHA-2, SHA-3, SHA-1, MD5 và RIPEMD-160, khóa dạng văn bản, hex hoặc Base64, và hiển thị MAC dạng hex chữ thường/chữ hoa hoặc Base64 ngay khi bạn gõ.
Cách sử dụng Tạo HMAC
- Gõ Thông điệp (văn bản, hoặc đổi cách mã hóa sang Hex cho byte thô).
- Nhập Khóa bí mật và chọn nó là văn bản (UTF-8), Hex hay Base64.
- Chọn Thuật toán, ví dụ HMAC-SHA-256.
- Chọn Định dạng kết quả và sao chép HMAC.
Ví dụ
Message "what do ya want for nothing?", key "Jefe", HMAC-SHA-256
5bdcc146bf60754e6a042426089575c75a003f089d2739839dec58b964ec3843
Trường hợp kiểm thử 2 của RFC 4231.
Khi nào nên dùng Tạo HMAC
Dùng để xác minh chữ ký webhook (Stripe, GitHub, Shopify, Slack), ký request API, gỡ lỗi các bước ký kiểu AWS hoặc kiểm tra vector kiểm thử HMAC. Nó không phù hợp để băm mật khẩu (hãy dùng bcrypt hoặc Argon2) và không phải chữ ký số: ai có khóa cũng tạo được MAC.
Tạo HMAC hoạt động như thế nào
HMAC(K, m) = H((K′ ⊕ opad) ‖ H((K′ ⊕ ipad) ‖ m)), trong đó K′ là khóa được đệm 0 cho đủ kích thước khối hash (khóa dài hơn khối sẽ được băm trước), ipad = 0x36 và opad = 0x5C lặp lại. Cấu trúc này vẫn an toàn ngay cả với hàm băm như MD5 và SHA-1 vốn đã bị phá khả năng chống va chạm. Giá trị băm đến từ hash-wasm, và kết quả khớp với vector kiểm thử RFC 4231 và RFC 2202.
Các Trường Hợp Sử Dụng Phổ Biến
- Xác minh chữ ký
X-Hub-Signature-256của GitHub hoặc webhook Stripe - Tái tạo chữ ký request API khi gỡ lỗi
- Kiểm tra vector kiểm thử HMAC từ RFC 4231
- Tạo giá trị HMAC-SHA1 để gỡ lỗi OAuth 1.0 cũ hoặc TOTP
- So sánh kết quả giữa hai ngôn ngữ cho ra khác nhau
Lưu Ý Bảo Mật
Khóa và thông điệp ở lại trong trình duyệt của bạn. Trên máy chủ, hãy so sánh MAC bằng hàm thời gian hằng định để tránh tấn công định thời.
Câu Hỏi Thường Gặp
Vì sao HMAC của tôi không khớp với header webhook?
Hãy kiểm tra bạn băm đúng phần thân request thô từng byte (không phải JSON đã định dạng lại), đúng secret (một số nhà cung cấp đưa nó dạng Base64 hoặc kèm tiền tố như whsec_), và đúng cách mã hóa kết quả – GitHub dùng hex, Shopify dùng Base64.
HMAC-SHA1 hoặc HMAC-MD5 còn an toàn không?
Với vai trò MAC, chúng chưa bị phá trong thực tế, vì HMAC không dựa vào khả năng chống va chạm. Chúng được coi là cũ; hãy dùng HMAC-SHA-256 trở lên cho hệ thống mới.
Khóa có thể để trống không?
RFC 2104 cho phép và công cụ vẫn tính, nhưng khóa trống không đem lại bảo mật nào.
HMAC có giống băm khóa + thông điệp không?
Không. Kiểu hash(key + message) đơn giản dễ bị tấn công mở rộng độ dài với SHA-2; việc băm hai lần của HMAC ngăn chặn điều đó.