Cách dùng Tạo HMAC Online
- Dán thông điệp đúng như khi ký — với webhook, đó là raw body của request.
- Nhập secret key và chọn kiểu mã hóa của khóa.
- Chọn thuật toán băm; giá trị HMAC sẽ cập nhật ngay lập tức.
- Dán chữ ký nhận được vào Chữ ký mong đợi để xác minh.
HMAC là gì?
HMAC (Hash-based Message Authentication Code, RFC 2104) kết hợp một khóa bí mật với hàm băm để tạo ra chữ ký. Ai có khóa đều tính được cùng một giá trị; ai không có khóa thì không thể làm giả. API dùng HMAC để ký request (AWS Signature v4, nhiều cổng thanh toán), còn webhook dùng HMAC để bạn chứng minh callback thực sự đến từ bên gửi.
Xác minh webhook
| Dịch vụ | Header | Thuật toán / mã hóa |
|---|---|---|
| GitHub | X-Hub-Signature-256 | HMAC-SHA256, hex, có tiền tố sha256= |
| Stripe | Stripe-Signature | HMAC-SHA256 dạng hex của timestamp.body |
| Shopify | X-Shopify-Hmac-Sha256 | HMAC-SHA256, Base64 |
| Slack | X-Slack-Signature | HMAC-SHA256 dạng hex của v0:timestamp:body |
Lý do phổ biến nhất khiến chữ ký không khớp là nội dung đã bị thay đổi trước khi ký: JSON bị parse rồi serialize lại, hoặc khác khoảng trắng và ký tự xuống dòng. Luôn ký trên raw bytes bạn nhận được. Công cụ xác minh ở trên chấp nhận hex (có hoặc không có sha256=), Base64 và Base64url.
HMAC so với hash thông thường
Một hash SHA-256 thông thường chỉ chứng minh tính toàn vẹn, không chứng minh tính xác thực: ai cũng có thể tính lại sau khi sửa thông điệp. HMAC có kèm khóa bí mật, nên chỉ người giữ khóa mới tạo được giá trị hợp lệ. Hãy dùng khóa có số byte ngẫu nhiên ít nhất bằng độ dài đầu ra của hash (32 byte với SHA-256). Trong code phía server, nên so sánh chữ ký bằng hàm thời gian không đổi như crypto.timingSafeEqual.
Với hash không dùng khóa, hãy dùng công cụ tạo hash; với token có chữ ký, dùng JWT encoder.
Cũng được tìm dưới tên: hmac sha256 online, hmac generator, kiểm tra chữ ký hmac, xác minh webhook signature, hmac sha512, verify hmac.
Các công cụ dùng kèm tốt với Tạo HMAC Online
- Giải mã JWT — Dán JSON Web Token vào đây để xem header và payload, kiểm tra thời điểm hết hạn và xác minh chữ ký.
- Mã hóa / Giải mã Base64 — Chuyển văn bản sang Base64 và ngược lại với hỗ trợ đầy đủ UTF-8 (dấu tiếng Việt, emoji), chuyển sang Base64 an toàn cho URL, hoặc thả tệp vào để lấy chuỗi Base64 hay data URI.
- Mã hóa & Giải mã AES — Bảo vệ ghi chú, thông tin bí mật hoặc giá trị cấu hình bằng mật khẩu với AES-256, hoặc giải mã văn bản được tạo bởi openssl enc.
- Kiểm tra IBAN — Kiểm tra IBAN có hợp lệ không trước khi bạn chuyển tiền hoặc lưu lại: quốc gia, độ dài theo quy định của quốc gia đó, định dạng số tài khoản và checksum mod-97.
Câu hỏi thường gặp
Tại sao HMAC của tôi không khớp với chữ ký webhook?
sha256=.