مولّد HMAC

احسب HMAC-SHA256 وSHA-384 وSHA-512 وSHA-224 وSHA-1 وMD5 وSHA3 وRIPEMD-160 لرسالة بمفتاح نصي أو hex أو Base64. ناتج hex أو Base64 مباشرة.

يمزج HMAC (RFC 2104) المفتاح في التجزئة مرتين: H((K ⊕ opad) || H((K ⊕ ipad) || message)). المفاتيح الأطول من كتلة التجزئة تُجزّأ أولًا. قارن رموز MAC على الخادم بزمن ثابت.

ما هو مولّد HMAC؟

تحسب رمز مصادقة الرسائل بمفتاح (HMAC، RFC 2104) لرسالة ومفتاح سري. تدعم SHA-2 وSHA-3 وSHA-1 وMD5 وRIPEMD-160، ومفاتيح بصيغة نص أو hex أو Base64، وتعرض الرمز بصيغة hex بأحرف صغيرة/كبيرة أو Base64 أثناء الكتابة.

كيفية استخدام مولّد HMAC

  1. اكتب الرسالة (نصًا، أو غيّر الترميز إلى Hex للبايتات الخام).
  2. أدخل المفتاح السري واختر ما إذا كان نصًا (UTF-8) أو Hex أو Base64.
  3. اختر الخوارزمية، مثل HMAC-SHA-256.
  4. اختر تنسيق الناتج وانسخ HMAC.

مثال

الإدخال
Message "what do ya want for nothing?", key "Jefe", HMAC-SHA-256
الإخراج
5bdcc146bf60754e6a042426089575c75a003f089d2739839dec58b964ec3843

حالة الاختبار 2 في RFC 4231.

متى تستخدم مولّد HMAC

استخدمها للتحقق من تواقيع webhook (Stripe وGitHub وShopify وSlack)، وتوقيع طلبات API، وتصحيح خطوات التوقيع بأسلوب AWS، أو التحقق من متجهات اختبار HMAC. وهي لا تصلح لتجزئة كلمات المرور (استخدم bcrypt أو Argon2) وليست توقيعًا رقميًا: فكل من يملك المفتاح يستطيع إنشاء الرمز.

كيف يعمل مولّد HMAC

HMAC(K, m) = H((K′ ⊕ opad) ‖ H((K′ ⊕ ipad) ‖ m))، حيث K′ هو المفتاح مُحشوًّا بالأصفار إلى حجم كتلة التجزئة (المفاتيح الأطول من الكتلة تُجزّأ أولًا)، وipad = 0x36 وopad = 0x5C مكررين. تبقى هذه البنية آمنة حتى مع تجزئات مثل MD5 وSHA-1 التي كُسرت مقاومتها للتصادم. تأتي الملخصات من hash-wasm، وتطابق النتائج متجهات اختبار RFC 4231 وRFC 2202.

حالات الاستخدام الشائعة

  • التحقق من توقيع GitHub X-Hub-Signature-256 أو توقيع webhook في Stripe
  • إعادة إنتاج توقيع طلب API أثناء تصحيح الأخطاء
  • فحص متجهات اختبار HMAC من RFC 4231
  • توليد قيم HMAC-SHA1 لتصحيح OAuth 1.0 القديم أو TOTP
  • مقارنة المخرجات بين لغتين لا تتفقان

ملاحظة أمنية

يبقى المفتاح والرسالة في متصفحك. قارن رموز MAC على الخادم بدالة زمن ثابت لتجنب هجمات التوقيت.

الأسئلة الشائعة

لماذا لا يطابق HMAC لديّ ترويسة webhook؟

تأكد من أنك تجزّئ جسم الطلب الخام بايتًا بايتًا (دون إعادة تنسيق JSON)، ومن السر الدقيق (بعض المزوّدين يعطونه بصيغة Base64 أو ببادئة مثل whsec_)، ومن ترميز الناتج المتوقع – يستخدم GitHub صيغة hex بينما يستخدم Shopify صيغة Base64.

هل ما زالت HMAC-SHA1 أو HMAC-MD5 آمنتين؟

كرموز مصادقة لا يوجد كسر عملي لهما، لأن HMAC لا تعتمد على مقاومة التصادم. لكنهما تُعدّان قديمتين؛ استخدم HMAC-SHA-256 أو أقوى للأنظمة الجديدة.

هل يمكن أن يكون المفتاح فارغًا؟

يسمح RFC 2104 بذلك وتحسبه الأداة، لكن المفتاح الفارغ لا يوفر أي أمان.

هل HMAC هي نفسها تجزئة المفتاح + الرسالة؟

لا. التجزئة البسيطة hash(key + message) عرضة لهجمات تمديد الطول مع SHA-2؛ أما التجزئة المزدوجة في HMAC فتمنع ذلك.

الخطوات التالية المقترحة

استكشف المزيد من الفئات