HMAC là gì?
HMAC (Mã Xác Thực Tin Nhắn Dựa Trên Hash) là một cơ chế mã hóa kết hợp một khóa bí mật với một hàm hash để tạo ra một mã xác thực. Nó cung cấp cả tính toàn vẹn dữ liệu và xác thực — đảm bảo rằng một tin nhắn chưa bị giả mạo và được gửi bởi ai đó biết khóa bí mật.
Các Trường Hợp Sử Dụng Phổ Biến
Xác Minh Webhook
Xác Thực API
Ký JWT
Tính Toàn Vẹn Tin Nhắn
HMAC Hoạt Động Như Thế Nào
HMAC lấy hai đầu vào — một khóa bí mật và một tin nhắn — và chạy chúng qua một hàm hash (như SHA-256) theo một cách cụ thể làm cho việc giả mạo trở nên tính toán không khả thi mà không biết khóa.
HMAC(K, m) = H((K' ⊕ opad) || H((K' ⊕ ipad) || m))
Trong Đó:
Hlà hàm hash (ví dụ: SHA-256)Klà khóa bí mậtmlà tin nhắn cần xác thựcopadvàipadlà các hằng số đệm đảm bảo bảo mật
Cách Sử Dụng Trình Tạo HMAC Này
Chọn Một Thuật Toán
Chọn thuật toán HMAC của bạn từ menu thả xuống. SHA-256 được chọn theo mặc định và được khuyến nghị cho hầu hết các trường hợp sử dụng. MD5 và SHA-1 có sẵn để tương thích ngược nhưng được đánh dấu là không an toàn.
Nhập Khóa Bí Mật Của Bạn
Nhập hoặc dán khóa bí mật của bạn vào trường nhập khóa. Nếu khóa của bạn ở định dạng nhị phân, hãy sử dụng bộ chọn loại đầu vào để chuyển đổi giữa mã hóa String, Hex hoặc Base64.
Nhập Tin Nhắn Của Bạn
Nhập tin nhắn bạn muốn xác thực. Giống như khóa, bạn có thể chuyển đổi loại đầu vào nếu tin nhắn của bạn được mã hóa hex hoặc base64.
Nhận HMAC Của Bạn
HMAC được tạo tự động khi bạn nhập. Cả đầu ra Hex và Base64 được hiển thị cùng lúc. Nhấp vào nút sao chép bên cạnh bất kỳ đầu ra nào để sao chép nó vào bảng tạm của bạn.
Xác Minh Một HMAC
Để so sánh HMAC được tạo của bạn với một giá trị dự kiến, hãy bật hộp kiểm Xác Minh HMAC. Dán HMAC dự kiến — công cụ chấp nhận cả định dạng hex và base64 và hiển thị một huy hiệu Khớp hoặc Không Khớp ngay lập tức.
Các Tính Năng
8 Thuật Toán HMAC
Tạo mã HMAC với một loạt các thuật toán hash để phù hợp với bất kỳ yêu cầu tích hợp nào:
SHA-256 Được Khuyến Nghị
Lựa chọn tiêu chuẩn cho webhook, API và JWT (HS256). Cung cấp bảo mật xuất sắc với đầu ra 256-bit.
SHA-512
Bảo mật cao hơn với đầu ra 512-bit. Lý tưởng cho các ứng dụng yêu cầu sức mạnh mã hóa tối đa.
SHA-384 & SHA-224
Các biến thể SHA-2 thay thế cung cấp đầu ra 384-bit và 224-bit cho các yêu cầu bảo mật cụ thể.
SHA3-256 & SHA3-512
Các thuật toán SHA-3 thế hệ mới nhất dựa trên thuật toán Keccak, cung cấp các tiêu chuẩn mã hóa hiện đại.
Định Dạng Đầu Vào Linh Hoạt
Cả khóa bí mật và tin nhắn chấp nhận ba loại đầu vào, cần thiết khi làm việc với các khóa nhị phân từ API hoặc gỡ lỗi các không khớp mã hóa:
String (UTF-8)
Hex
Base64
Hiển Thị Đầu Ra Kép
Xem cả biểu diễn Hex và Base64 của HMAC của bạn cùng một lúc — không cần chuyển đổi. Một chuyển đổi chữ hoa cho phép bạn chuyển đổi đầu ra hex giữa chữ thường và chữ hoa.
Định Dạng Thập Lục Phân
- Biểu diễn dài hơn
- Dễ đọc và gỡ lỗi hơn
- Hai ký tự trên mỗi byte
- Chuyển đổi chữ hoa/chữ thường
Định Dạng Base64
- Nhỏ gọn hơn 33%
- Phổ biến trong tiêu đề HTTP
- Được sử dụng trong token JWT
- Các biến thể an toàn URL có sẵn
Xác Minh HMAC
Chế độ xác minh tích hợp cho phép bạn dán một giá trị HMAC dự kiến và ngay lập tức xem liệu nó có khớp với đầu ra được tạo của bạn hay không. Nó hỗ trợ cả định dạng hex và base64 và chuẩn hóa khoảng trắng và trường hợp để so sánh hex.
Xác Thực Tức Thì
So sánh theo thời gian thực với các huy hiệu Khớp/Không Khớp khi bạn nhập.
Tính Linh Hoạt Định Dạng
Chấp nhận cả định dạng đầu vào hex và base64 tự động.
Chuẩn Hóa Thông Minh
Xử lý các khác biệt về khoảng trắng và trường hợp trong các giá trị hex.
Dữ Liệu Của Bạn Vẫn Riêng Tư
Tất cả tính toán HMAC diễn ra hoàn toàn trong trình duyệt của bạn bằng cách sử dụng thư viện CryptoJS:
- Không tải lên — Các khóa bí mật và tin nhắn của bạn không bao giờ rời khỏi thiết bị của bạn
- Không xử lý máy chủ — Mọi thứ chạy phía máy khách trong JavaScript
- Không theo dõi — Chúng tôi không ghi nhật ký hoặc lưu trữ bất kỳ dữ liệu đầu vào nào
- Có khả năng ngoại tuyến — Hoạt động mà không cần kết nối internet sau khi tải
Các Câu Hỏi Thường Gặp
Tôi nên sử dụng thuật toán HMAC nào?
SHA-256 là thuật toán được sử dụng rộng rãi nhất và được khuyến nghị cho hầu hết các ứng dụng. Nó được sử dụng bởi webhook Stripe, GitHub, Shopify và chữ ký API AWS. Sử dụng SHA-512 nếu bạn cần bảo mật cao hơn, hoặc các biến thể SHA3 cho tiêu chuẩn mới nhất.
Tại sao MD5 và SHA-1 được đánh dấu là không an toàn?
MD5 và SHA-1 có những điểm yếu mã hóa đã biết — các cuộc tấn công va chạm đã được chứng minh cho cả hai. Mặc dù HMAC-MD5 và HMAC-SHA1 vẫn được coi là an toàn trong một số bối cảnh (cấu trúc HMAC thêm bảo mật), nhưng thực hành tốt nhất là sử dụng SHA-256 hoặc cao hơn cho các triển khai mới.
Sự khác biệt giữa đầu ra Hex và Base64 là gì?
Hex biểu diễn mỗi byte dưới dạng hai ký tự thập lục phân (0-9, a-f). Nó dài hơn nhưng dễ đọc và gỡ lỗi hơn. Base64 nhỏ gọn hơn (khoảng 33% ngắn hơn) và thường được sử dụng trong tiêu đề HTTP và JWT. Chọn bất kỳ định dạng nào mà API hoặc dịch vụ của bạn mong đợi.
| Định Dạng | Độ Dài | Sử Dụng Phổ Biến | Khả Năng Đọc |
|---|---|---|---|
| Hex | 64 ký tự (SHA-256) | Gỡ lỗi, nhật ký | Cao |
| Base64 | 44 ký tự (SHA-256) | Tiêu đề HTTP, JWT | Trung Bình |
Khi nào tôi nên sử dụng loại đầu vào Hex hoặc Base64 cho khóa?
Nếu khóa bí mật của bạn được cung cấp dưới dạng chuỗi hex (ví dụ: từ bảng điều khiển API hiển thị byte thô) hoặc chuỗi base64, hãy chọn loại đầu vào phù hợp để công cụ diễn giải chính xác dữ liệu nhị phân. Hầu hết thời gian, "String" (UTF-8) là lựa chọn đúng.
- String (UTF-8) — Sử dụng cho mật khẩu văn bản thông thường và khóa API như "my_secret_key_123"
- Hex — Sử dụng khi khóa của bạn trông giống như "a3f5b2c8d1e4..." (byte thập lục phân)
- Base64 — Sử dụng khi khóa của bạn trông giống như "SGVsbG8gV29ybGQ=" (được mã hóa base64)
Làm cách nào để xác minh chữ ký webhook?
Nhập bí mật ký của webhook làm khóa, dán phần thân yêu cầu thô làm tin nhắn, chọn thuật toán mà dịch vụ của bạn sử dụng (thường là SHA-256), sau đó bật Xác Minh HMAC và dán chữ ký từ tiêu đề webhook để kiểm tra xem nó có khớp hay không.
Lấy Bí Mật
Sao chép bí mật ký từ bảng điều khiển dịch vụ
Phần Thân Thô
Dán phần thân yêu cầu chính xác
Xác Minh
So sánh với chữ ký tiêu đề
Dữ liệu của tôi có an toàn không?
Có. Tất cả tính toán HMAC chạy hoàn toàn trong trình duyệt của bạn — không có dữ liệu nào được gửi đến bất kỳ máy chủ nào. Các khóa bí mật và tin nhắn của bạn vẫn ở trên thiết bị của bạn mọi lúc.
Chưa có bình luận nào. Hãy là người đầu tiên!