الأدوات
الأدلة

مولّد الملح والرمز العشوائي

التشفير

يولّد أملاحًا ورموزًا عشوائية آمنة تشفيريًا بصيغة Hex أو Base64 باستخدام crypto.getRandomValues.

100% من جهة العميل بدون خادم خلفي
في هذه الصفحة

ما هو المِلح؟#

المِلح قطعة بيانات عشوائية تخلطها في عملية التجزئة بحيث يُنتج مدخلان متماثلان مخرجين مختلفين. وظيفته التفرّد لا السرّية: يمكن للمِلح أن يجلس بنصّ مقروء بجوار الهاش الذي يحميه، ولا يزال يهزم هجومًا يعتمد على أنّ كلّ مستخدم بكلمة المرور نفسها يُجزَّأ إلى الملخّص نفسه. ما إن يمتلك كلّ كلمة مرور مِلحها الخاص، حتى لا يستطيع المهاجم إعادة استخدام جدول محسوب مسبقًا واحد عبر قاعدة البيانات كلّها — بل عليه إعادة الحساب لكلّ سجلّ.

تُنشئ هذه الصفحة بايتات عشوائية قوية تشفيريًّا عبر crypto.getRandomValues وتسلّمها لك بثلاث ترميزات: hex (محرفان لكلّ بايت، الاتفاق لأملاح كلمات المرور ورموز السلامة)، وbase64 (أكثر إحكامًا)، وbase64url (الن variant الآمن للأ URLs وأسماء الملفات الذي يُبدِّل +// بـ -/_ ويُسقط حشو =، المستخدم في ملفات JWT والعناوين الموقَّعة).

البدائي نفسه يخدم أيضًا بوصفه مولّد رموز عشوائية للأغراض العامة: مفاتيح الواجهات البرمجية، وقيم nonce، ومعرّفات مبهمة، والرموز لمرة واحدة، كلّها «بعض البايتات العشوائية، مرمَّزة كنصّ»، وهذا بالضبط ما تُنتجه.

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

  1. اضبط عدد البايتات. الافتراضي 16 (128 بت) هو حجم المِلح المعياري؛ ويقبل الحقل حتى 8192 حين تحتاج رمزًا أطول.
  2. اختر صيغة الإخراج: hex، أو base64، أو base64url.
  3. انقر توليد، ثم نسخ. يُظهر سطر الحالة كم بتّة إنتروبيا يمثّلها المخرج (بايتات × 8)، فتتأكّد بنظرة أنّك حصلت على ما طلبته.

الميزات الرئيسية#

  • بايتات عشوائية غير منحازة. مصدرها crypto.getRandomValues، مولّد المتصفح القوي تشفيريًّا.
  • ثلاث ترميزات. hex للأملاح والمجاميع الاختبارية؛ base64 للرموز المُحكمة؛ base64url لأيّ ما يسافر في URL أو اسم ملفّ أو JSON.
  • تقرير إنتروبيا صادق. يصرّح سطر الحالة بعدد البتّات الفعلي بدلًا من طول السلسلة المرمَّزة، الذي يسهل قراءته خطأً.
  • حتى 8192 بايت. تخدم الأداة نفسها مِلحًا بطول 16 بايتًا وكتلة مفاتيح بطول 256 بايتًا.
  • رفع صفري. التوليد محليّ؛ البايتات العشوائية لا تُنقل أبدًا.

مثال عملي#

أنشئ 16 بايت في كلّ من الصيغ الثلاث. السحب بـ 16 بايتًا هو 128 بتّة من الإنتروبيا، والأطوال المرمَّزة ثابتة بصرف النظر عن القيم العشوائية:

  • hex — 32 محرفًا، مثل 7a4c9f1e0b8d2635c4a1e9f07b2d4861
  • base64 — 24 محرفًا مع حشو ==، مثل 8MDwarqMD7B594C5hCB1zQ==
  • base64url — 22 محرفًا، الحشو مُزال، مثل 8MDwarqMD7B594C5hCB1zQ

(القيم أعلاه توضّح الشكل؛ يختلف مخرجك الفعلي في كلّ نقرة لأنّ البايتات طازجة عشوائيًّا.) ارفع إلى 32 بايت لمِلح أو مفتاح بطول 256 بت فتنمو الأطوال حتميًّا: 64 محرف hex، و44 محرف base64، و43 محرف base64url. تلك العلاقة الثابتة بين عدد البايتات والطول المرمَّز طريقة سريعة لفحص الصحّة بأنّك ولّدت الحجم الذي نويت.

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

هل يحتاج المِلح أن يكون سرًّا؟#

لا. غرض المِلح التفرّد — فهو يضمن أنّ تجزئة كلمة المرور نفسها مرّتين تُنتج ملخّصين مختلفين. يُخزَّن بجوار الهاش بنصّ مقروء، ولا يُضعف المخطّط. أما الشيء الذي يجب أن يبقى سرًّا فهو المفتاح في HMAC أو كلمة المرور في التشفير، لا المِلح.

كم بايت يجب أن أُنشئ؟#

16 بايت (128 بت) هو المعيار لأملاح كلمات المرور ومعظم الرموز — فهو يجعل التصادمات العرضية مستحيلة عمليًّا. لرموز الجلسة أو أيّ شيء تريد أن يدوم طويلًا ضدّ مهاجمٍ ممول جيدًا، 32 بايت (256 بت) هامش مريح. أيّ زيادة على ذلك غالبًا إفراط ما لم يطلبها بروتوكول محدّد.

ما الفرق بين base64 وbase64url؟#

كلاهما يرمّز البايتات نفسها، لكنّ base64 يستخدم + و/، وهما يكسران الأ URLs وأسماء الملفات، ويحشو بـ =. أمّا base64url فيستبدلها بـ - و_ ويسقط الحشو، فتكون النتيجة قابلة للإفلات مباشرةً في مسار URL أو سلسلة استعلام أو اسم ملفّ دون تهريب. استخدم base64url لملفات JWT والعناوين الموقَّعة والرموز المبهمة؛ واستخدم base64 العادي حين يبقى المخرج داخل حقول البيانات.

هل أستطيع استخدام هذا كمفتاح واجهة برمجية؟#

نعم. أنشئ 32 بايت بصيغة base64url فتحصل على رمز بطول 43 محرفًا مع 256 بتّة من الإنتروبيا — أكثر من كافٍ لمفتاح واجهة برمجية أو رمز حامل طويل الأمد. فقط تأكّد من نسخه فورًا، لأنّ القيمة تُولَّد محليًّا ولا يمكن استعادتها لاحقًا.