نحوه استفاده
- کلید مخفی را وارد کنید و انتخاب کنید که متن ساده است یا بایتهای هگز.
- پیام را جایگذاری کنید؛ برای مثال payload وبهوک را دقیقاً همانطور که دریافت شده است.
- الگوریتم و کدگذاری خروجی مورد استفاده سرویس خود را انتخاب کنید؛ HMAC همزمان با تایپ شما بهروز میشود.
- برای بررسی امضا، آن را در کادر بررسی جایگذاری کنید و بهدنبال «Match» بگردید.
نحوه کار
HMAC (RFC 2104) یک کلید محرمانه را با تابع هش ترکیب میکند تا امضایی تولید کند که تنها کسی که کلید را دارد میتواند آن را بسازد. سرویسهایی مانند وبهوکها و درخواستهای API امضاشده همراه هر پیام یک HMAC میفرستند تا گیرنده بتواند بررسی کند که پیام معتبر و بدون تغییر است.
این ابزار از Web Crypto API مرورگر شما (crypto.subtle.importKey و sign) استفاده میکند و با بردارهای تست RFC 4231 و RFC 2202 مقایسه شده است. کلید متنی و پیام بهصورت UTF-8 کدگذاری میشوند. کلید hex به بایتهای خام رمزگشایی میشود؛ فاصلهها، دونقطهها و 0x ابتدایی نادیده گرفته میشوند. HMAC-SHA-256 رایجترین انتخاب است؛ HMAC-SHA-1 همچنان بهعنوان MAC امن در نظر گرفته میشود اما بیشتر در APIهای قدیمی کاربرد دارد.
اگر امضای شما مطابقت نداشت، جزئیاتی را بررسی کنید که اغلب متفاوت هستند: بایتهای دقیق پیام (بسیاری از ارائهدهندگان وبهوک بدنه خام را امضا میکنند، نه JSON بازقالببندیشده)، برچسب زمانی یا پیشوندی که ارائهدهنده به رشته امضاشده اضافه میکند، اینکه کلید بهصورت متن استفاده میشود یا ابتدا باید از hex یا Base64 رمزگشایی شود، و اینکه امضای مورد انتظار hex است یا Base64 و پیشوندی مانند «sha256=» دارد که باید پیش از مقایسه حذف شود.
نمونهها
نمونه تست RFC 4231
کلید «Jefe» (متن)، پیام «what do ya want for nothing?» و HMAC-SHA-256 مقدار 5bdcc146bf60754e6a042426089575c75a003f089d2739839dec58b964ec3843 را میدهد. برای بارگذاری آن از «یک مثال را امتحان کنید» استفاده کنید.
بررسی امضای وبهوک
یک ارائهدهنده با هر درخواست سرآیند X-Signature: sha256=… میفرستد. بدنه خام درخواست را بهعنوان پیام و رمز وبهوک خود را بهعنوان کلید بچسبانید، HMAC-SHA-256 و Hex را انتخاب کنید، سپس مقدار بعد از «sha256=» را در کادر تأیید قرار دهید.
کلید کدگذاریشده با hex
برخی سیستمها کلیدها را بهصورت رشته hex مانند 0b0b0b… صادر میکنند. Hex را بهعنوان قالب کلید انتخاب کنید تا ابزار با بایتهای رمزگشاییشده امضا کند؛ در نظر گرفتن همان رشته بهعنوان متن نتیجه کاملاً متفاوتی میدهد.
پرسشهای متداول
تفاوت HMAC با هش ساده چیست؟
هر کسی میتواند یک هش ساده مانند SHA-256 یک پیام را محاسبه کند. HMAC به یک کلید محرمانه نیز وابسته است، بنابراین فقط کسی که کلید را دارد میتواند آن را تولید یا بررسی کند. این ثابت میکند که پیام از طرف دارنده کلید آمده و تغییر نکرده است.
چرا HMAC من با مقدار تولیدشده توسط سرورم مطابقت ندارد؟
بایتهای ورودی تقریباً همیشه متفاوت هستند: پایان خط، فاصلههای خالی، ترتیب کلیدهای JSON، کدگذاری نویسهها، یا کلیدی که باید از hex یا Base64 رمزگشایی شود. همچنین همان کدگذاری را مقایسه کنید (hex در برابر Base64) و پیشوندهایی مانند «sha256=» را حذف کنید.
آیا کلید مخفی من به جایی ارسال میشود؟
خیر. کلید و پیام فقط توسط Web Crypto API در همین برگه مرورگر استفاده میشوند. آنها بارگذاری، ذخیره یا در تحلیل دادهها گنجانده نمیشوند.
آیا HMAC-SHA-1 همچنان امن است؟
برخوردهای SHA-1 مستقیماً HMAC-SHA-1 را از بین نمیبرند و همچنان برای سازگاری پذیرفته است. برای سیستمهای جدید از HMAC-SHA-256 یا قویتر استفاده کنید.
حریم خصوصی
کلید، پیام و نتیجه فقط در همین برگه مرورگر وجود دارند. هیچ چیزی بارگذاری، ذخیره یا به سرویس تحلیل ارسال نمیشود؛ فقط یک رویداد ناشناس مبنی بر استفاده از ابزار ثبت میشود.