CoderTools

Trình tạo HMAC

Tạo mã xác thực HMAC an toàn với nhiều thuật toán hash

Khóa bí mật được sử dụng để tạo HMAC. Giữ bí mật!

* SHA-1 được coi là không an toàn. ** MD5 đã bị phá vỡ về mặt mật mã và chỉ nên được sử dụng cho khả năng tương thích cũ. Sử dụng SHA-256 hoặc SHA-512 cho các ứng dụng mới.

Về HMAC

HMAC (Keyed-Hash Message Authentication Code) là một cơ chế xác thực thông báo sử dụng các hàm băm mật mã và một khóa bí mật. Theo RFC 2104, nó được sử dụng để xác minh cả tính toàn vẹn của dữ liệu và tính xác thực của thông báo.

Khác với hàm băm tiêu chuẩn (như SHA-256) chỉ đảm bảo tính toàn vẹn, HMAC sử dụng khóa bí mật để đảm bảo tính xác thực (phát hiện giả mạo). Nó được sử dụng rộng rãi trong xác thực API (ví dụ: AWS Signature v4), JWT và truyền dữ liệu tài chính.

Thuật toán HMAC được hỗ trợ

Hỗ trợ đầy đủ các thuật toán như SHA-256, SHA-512, SHA-384, SHA-224, và SHA-3. Hỗ trợ cũ gồm MD5SHA-1. Công thức: HMAC(K, m) = H((K' ⊕ opad) || H((K' ⊕ ipad) || m)).

Các trường hợp sử dụng phổ biến

Xác thực yêu cầu API và xác minh chữ ký
Ký JWT (JSON Web Token) bằng HS256/HS384/HS512
Xác minh payload Webhook
Dẫn xuất khóa dựa trên mật khẩu (PBKDF2)
Xác minh tính toàn vẹn thông điệp trong giao tiếp bảo mật

Cân nhắc bảo mật

Bảo mật phụ thuộc vào khóa bí mật. Độ mạnh khóa: Khóa nên ngẫu nhiên và dài ít nhất bằng đầu ra của hàm băm (ví dụ: 32 byte cho SHA-256). Chọn thuật toán: Sử dụng SHA-256 hoặc SHA-512 cho ứng dụng mới. Tránh MD5 và SHA-1.

Ví dụ

Thông điệp: "Hello, World!"

Khóa bí mật: "secret-key-2025"

Thuật toán: HMAC-SHA256

Đầu ra:

e4d7f1b4c4e5a8d3e...

Câu hỏi thường gặp (FAQ)

Sự khác biệt giữa Hash và HMAC là gì?

Hash (như SHA-256) là hàm một chiều ai cũng tính được. HMAC sử dụng Hash *cộng với* khóa bí mật. Chỉ người giữ khóa mới có thể tạo hoặc xác minh HMAC chính xác.

Tại sao không dùng Hash(Key + Message)?

Việc nối đơn giản (`H(Key + Message)`) dễ bị 'tấn công mở rộng độ dài' (Length Extension Attack) với MD5/SHA-1. Cấu trúc lồng nhau của HMAC ngăn chặn điều này.

HMAC có thể đảo ngược (giải mã) không?

Không. HMAC là hàm băm, không phải mã hóa. Nó là một chiều.

Khóa bí mật nên dài bao nhiêu?

RFC 2104 khuyến nghị độ dài ít nhất bằng độ dài đầu ra băm (ví dụ: 32 byte cho SHA-256).

Có thể dùng để lưu mật khẩu không?

Mặc dù tốt hơn băm đơn giản, nhưng với mật khẩu, hãy dùng các hàm dẫn xuất khóa (KDF) như PBKDF2, bcrypt hoặc Argon2.

Khóa của tôi có an toàn không?

Có. Công cụ này chạy hoàn toàn phía client. Việc tính toán HMAC được thực hiện bằng JavaScript ngay trong trình duyệt của bạn.

Menu Nhanh

Chưa có công cụ gần đây