مولّد HMAC والتحقق منه
أنشئ تواقيع HMAC-SHA256 وغيرها من تواقيع HMAC بمفتاح سري، وتحقّق منها.
اختياري. ويمكن لصق قيمة ترويسة X-Hub-Signature-256 من GitHub (sha256=…) كما هي.
HMAC توقيع يُحسب من رسالة ومفتاح سري مشترك: يستطيع كل من يملك المفتاح حسابه من جديد، وأي تغيير في الرسالة أو المفتاح يعطي قيمة مختلفة. وتستخدمه خطافات الويب (webhooks) في GitHub وStripe وSlack، وطلبات API الموقّعة، ورموز JWT من نوع HS256. تتحدّث قيمة HMAC أثناء الكتابة، ويمكنك لصق توقيع للتحقق منه. يحسبها Web Crypto المدمج في متصفحك، فلا تغادر الرسالة ولا المفتاح جهازك؛ والأداة مجانية ولا تتطلب تسجيلًا.
طريقة إنشاء HMAC والتحقق منه
- الصق الرسالة كما وُقّعت تمامًا، وفي حالة webhook الصق نص الطلب الخام (raw body).
- أدخل المفتاح السري، أو انقر «توليد» للحصول على مفتاح عشوائي؛ واختر Hex إن أُعطيت المفتاح كبايتات بصيغة hex.
- اختر الخوارزمية (SHA-256 ما لم يُطلب غيرها) وانسخ النتيجة بصيغة hex أو Base64.
- للتحقق من توقيع، الصقه في قسم «التحقق من توقيع»، وقيمة ترويسة sha256=… من GitHub تعمل كما هي.
الميزات
- HMAC-SHA1 وHMAC-SHA256 وHMAC-SHA384 وHMAC-SHA512
- مفتاح سري نصي (UTF-8) أو بصيغة hex، أو مفتاح عشوائي من 32 بايت عبر زر «توليد»
- النتيجة بصيغة hex أو Base64، وتتحدّث أثناء الكتابة
- يتحقق من توقيع مستلَم بصيغة hex أو Base64 (بما فيها الصيغة الآمنة للروابط)، مع البادئة sha256= من GitHub أو v0= من Slack أو بدونهما
- ينبّهك حين يوافق طول التوقيع خوارزمية أخرى، مع زر للتبديل إليها
- حساب بـ Web Crypto المدمج في متصفحك
هل تبقى بياناتي خاصة؟
نعم. يحسب Web Crypto المدمج في متصفحك قيمة HMAC؛ وتبقى الرسالة والمفتاح السري في هذه الصفحة ولا تُرفع ولا تُحفظ أبدًا.
الأسئلة الشائعة
كيف أتحقق من توقيع webhook في GitHub؟
الصق نص الطلب الخام كرسالة، وسر الـ webhook كمفتاح نصي، وقيمة ترويسة X-Hub-Signature-256 في قسم «التحقق من توقيع». يرسل GitHub البادئة sha256= متبوعة بقيمة HMAC-SHA256 للنص بصيغة hex، وتُقرأ البادئة كما هي.
كيف أتحقق من توقيع JWT من نوع HS256؟
الصق ترويسة الرمز وحمولته، أي كل ما قبل النقطة الثانية، كرسالة، والسر كمفتاح، واختر SHA-256، ثم الصق الجزء الثالث من الرمز في قسم «التحقق من توقيع». وتُقرأ صيغة Base64 الآمنة للروابط الخاصة به كما هي.
لماذا لا يتطابق توقيعي؟
يجب أن تكون الرسالة مطابقة بايتًا ببايت لما وُقّع: فإعادة تنسيق JSON، أو غياب فاصل أسطر في النهاية أو زيادته، أو نهايات الأسطر بنمط Windows (CRLF)، كلها تغيّر قيمة HMAC. والنص المكتوب هنا يستخدم فواصل أسطر LF. وتحقّق أيضًا من الخوارزمية ومن كون المفتاح نصيًا أو بصيغة hex.
هل تعطي النتيجة نفسها التي يعطيها OpenSSL؟
نعم. الأمر printf '%s' 'message' | openssl dgst -sha256 -hmac 'key' يطبع قيمة hex نفسها، والمفتاح بصيغة hex يطابق -mac HMAC -macopt hexkey:…. استخدم printf أو echo -n: فالأمر echo العادي يضيف فاصل أسطر يُوقَّع هو أيضًا.
هل لا يزال استخدام HMAC-SHA1 آمنًا؟
في HMAC، نعم عمليًا: فتصادمات SHA-1 المعروفة لا تكسر HMAC-SHA1، ولهذا لا تزال خطافات الويب القديمة تستخدمه. أما لكل استخدام جديد فاختر HMAC-SHA256.