# مولّد HMAC-SHA256

أنشئ توقيع HMAC-SHA256 من رسالة ومفتاح سري. ترمّز الأداة كليهما بصيغة UTF-8، وتطبق بنية HMAC المحددة في RFC 2104 باستخدام SHA-256، ثم تعيد وسمًا بطول 256 بت بصيغة hex أو Base64. يستخدمها المطورون لتصحيح أخطاء توقيعات webhook من خدمات مثل Stripe وGitHub أو Slack، وتوقيع طلبات API ومقارنة النتائج مع شيفرتهم. لا يُعاد المفتاح ولا يُسجّل.

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

### ما هو HMAC-SHA256؟

HMAC-SHA256 هو رمز مصادقة للرسائل، يُنشأ باستخدام SHA-256 ومفتاح سري وفقًا لما يحدده RFC 2104. لا يمكن حساب الوسم الصحيح لرسالة إلا لمن لديه المفتاح. تتكون النتيجة من 32 بايتًا، أو 64 حرفًا بصيغة hex.

### كيف أتحقق من توقيع webhook؟

الصق نص الطلب الخام كما هو تمامًا بوصفه الرسالة، ومفتاح التوقيع السري بوصفه المفتاح، ثم قارن النتيجة بترويسة التوقيع. توقّع خدمات كثيرة مزيجًا من القيم، مثل الطابع الزمني لـ Stripe ونقطة ونص الطلب، لذا أنشئ الرسالة بالطريقة الموضحة في وثائقها. يؤدي تغيير بايت واحد إلى وسم مختلف.

### هل يوجد متجه اختبار معروف؟

تستخدم حالة الاختبار 2 في RFC 4231 المفتاح Jefe والرسالة what do ya want for nothing?، وتتوقع القيمة 5bdcc146bf60754e6a042426089575c75a003f089d2739839dec58b964ec3843. تُعيد هذه الأداة القيمة نفسها تمامًا.

### كيف يُرمّز المفتاح والرسالة؟

يُرمّز كلاهما كنص UTF-8. إذا كان سرك معطًى بصيغة hex أو Base64، كما تفعل بعض الخدمات، فستختلف البايتات عن النص الظاهر أمامك، وعليك فك ترميز المفتاح في شيفرتك أولًا. تُحتسب المسافات البيضاء وفواصل الأسطر في كلا الحقلين.

### هل يُخزَّن مفتاحي السري؟

لا. يُستخدم المفتاح لحساب الوسم أثناء الطلب فقط. ولا يُضمّن في الاستجابة أو يُسجّل أو يُخزّن.

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

تقبل HMAC مفاتيح بأي طول، بما في ذلك المفتاح الفارغ. تُحسب تجزئة المفاتيح التي يزيد طولها على 64 بايتًا باستخدام SHA-256 أولًا، وفقًا لما تحدده RFC. للاستخدام الفعلي، اختر مفتاحًا عشوائيًا لا يقل طوله عن 32 بايتًا.

### هل أختار hex أم Base64؟

استخدم التنسيق الذي يرسله الطرف الآخر. تستخدم GitHub وStripe تنسيق hex، بينما تضيف Slack البادئة v0= إلى hex، وتستخدم أنظمة كثيرة مبنية على AWS وJWT التنسيق Base64. يرمّز كلاهما البايتات الـ32 نفسها.

### هل HMAC-SHA256 هو نفسه حساب تجزئة SHA-256 للمفتاح والرسالة بعد وصلهما؟

لا. تحسب HMAC تجزئة الرسالة مرتين باستخدام مفتاحين مبطّنين داخلي وخارجي، ما يحمي من هجمات تمديد الطول. يؤدي وصل المفتاح بالرسالة وحساب التجزئة مرة واحدة إلى نتيجة مختلفة وأضعف.

### كيف أقارن التوقيعات في شيفرتي؟

استخدم دالة مقارنة بزمن ثابت مثل crypto.timingSafeEqual في Node.js أو hmac.compare_digest في Python. قد تكشف المقارنة العادية للسلاسل معلومات توقيت عن الوسم المتوقع.

### ما الحجم الأقصى للرسالة؟

يمكن أن يصل الحجم الإجمالي للرسالة والمفتاح إلى 5 MiB من النص. وهذا يكفي عادةً لحمولات webhook وطلبات API.

إعلانك هنا؟

[راسلنا عبر البريد الإلكتروني](mailto:hi@dennn.is?subject=%D8%A7%D9%84%D8%A5%D8%B9%D9%84%D8%A7%D9%86%20%D8%B9%D9%84%D9%89%20OneClick%20Pro)

[إعلان مجموعة إضافات جاهزة للوكلاء من أجل WordPress.](https://sleekwp.com/?ref=oneclickpro)
