tigtools

مولّد HMAC

أنشئ رمز مصادقة رسالة بمفتاح (HMAC) لرسالة ومفتاح سري، أو تحقّق من توقيع استلمته. يبقى المفتاح والرسالة في متصفحك.

تعمل في متصفحك لا يلزم التسجيل

تتم معالجة المفتاح والرسالة في علامة تبويب المتصفح هذه فقط، ولا يُرسلان إلى أي مكان. مع ذلك، تجنّب لصق أسرار الإنتاج الفعلية على جهاز مشترك أو غير موثوق.
تنسيق المفتاح

تُوقَّع بصيغة UTF-8 كما كُتبت تمامًا. تؤدي المسافة أو فاصل السطر في النهاية إلى تغيير النتيجة.

الإخراج

الصق توقيعًا بصيغة hex (بأي حالة أحرف) أو Base64 لمقارنته بالنتيجة أعلاه.

كيفية الاستخدام

  1. أدخل المفتاح السري، وحدد ما إذا كان نصًا عاديًا أم بايتات بصيغة hex.
  2. الصق الرسالة، مثل حمولة webhook كما استلمتها تمامًا.
  3. اختر الخوارزمية وترميز الإخراج اللذين تستخدمهما خدمتك؛ يُحدَّث HMAC أثناء الكتابة.
  4. للتحقق من توقيع، الصقه في مربع التحقق وابحث عن «تطابق».

كيف تعمل الأداة

تجمع HMAC (RFC 2104) مفتاحًا سريًا مع دالة تجزئة لإنشاء توقيع لا يستطيع إنشاؤه إلا من يملك المفتاح. ترسل خدمات مثل webhooks والطلبات الموقّعة إلى API قيمة HMAC مع كل رسالة، كي يتمكن المستلِم من التحقق من أصالة الرسالة وعدم تغييرها.

تستخدم هذه الأداة Web Crypto API في متصفحك (crypto.subtle.importKey وsign)، وقد جرى التحقق منها باستخدام متجهات الاختبار RFC 4231 وRFC 2202. يُرمَّز المفتاح النصي والرسالة بتنسيق UTF-8. ويُفك ترميز المفتاح السداسي العشري إلى بايتات خام؛ مع تجاهل المسافات والنقطتين والبادئة 0x. يُعد HMAC-SHA-256 الخيار الأكثر شيوعًا؛ ولا يزال HMAC-SHA-1 آمنًا بوصفه MAC، لكنه يُستخدم بشكل أساسي مع واجهات API الأقدم.

إذا لم يطابق توقيعك التوقيع المتوقع، فتحقق من التفاصيل الأكثر عرضة للاختلاف: بايتات الرسالة الدقيقة (فكثير من موفّري webhook يوقّعون نص المحتوى الخام، لا JSON بعد إعادة تنسيقه)، أو طابع زمني أو بادئة يضيفها الموفّر إلى النص الموقّع، وما إذا كان المفتاح يُستخدم كنص أو يجب فك ترميزه أولًا من hex أو Base64، وما إذا كان التوقيع المتوقع بترميز hex أو Base64 ويحمل بادئة مثل “sha256=”، التي ينبغي إزالتها قبل المقارنة.

أمثلة

حالة اختبار RFC 4231

ينتج عن المفتاح “Jefe” (نص) والرسالة “what do ya want for nothing?” وخوارزمية HMAC-SHA-256 القيمة 5bdcc146bf60754e6a042426089575c75a003f089d2739839dec58b964ec3843. استخدم «جرّب مثالًا» لتحميلها.

التحقق من توقيع webhook

يرسل أحد الموفّرين الترويسة X-Signature: sha256=… مع كل طلب. الصق نص محتوى الطلب الخام بوصفه الرسالة، ومفتاح webhook السري بوصفه المفتاح، واختر HMAC-SHA-256 وHex، ثم الصق القيمة التي تلي “sha256=” في مربع التحقق.

مفتاح بترميز سداسي عشري

تصدر بعض الأنظمة مفاتيح على هيئة سلاسل سداسية عشرية مثل 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 أو خوارزمية أقوى.

الخصوصية

لا يوجد المفتاح والرسالة والنتيجة إلا في علامة تبويب المتصفح هذه. لا يُرفع أي شيء أو يُخزَّن أو يُرسل إلى أدوات التحليلات؛ ولا يُسجَّل سوى حدث مجهول يشير إلى استخدام الأداة.