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.
Kết quả
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 MD5 và SHA-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
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...
Tài liệu tham khảo
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.
Công Cụ Liên Quan
Bộ Tạo Hash SHA
Bộ tạo hash SHA trực tuyến hỗ trợ thuật toán SHA-1, SHA-256, SHA-384, SHA-512
Bộ Tạo Hash MD5/MD4
Tạo giá trị hash MD5 và MD4 cho văn bản hoặc tệp với nhiều định dạng đầu ra
Bộ Mã Hóa/Giải Mã Base64
Mã hóa và giải mã chuỗi Base64 nhanh chóng, hỗ trợ chuyển đổi cả văn bản và tệp
Bộ Mã Hóa/Giải Mã JWT
Giải mã, xác minh và tạo JSON Web Token với hỗ trợ nhiều thuật toán ký
Trình Tạo Mật Khẩu
Tạo mật khẩu ngẫu nhiên mạnh, an toàn với độ dài tùy chỉnh, loại ký tự, chỉ báo độ mạnh và tạo hàng loạt
Bộ Chuyển Đổi Timestamp
Chuyển đổi giữa timestamp Unix và ngày/giờ có thể đọc được