ما هو مولّد رموز عشوائية؟

أنشئ رموز عشوائية بتنسيق سداسي عشري أو base64 أو أبجدي رقمي أو آمن لعناوين URL أو أرقام فقط أو مع رموز أو بمجموعة أحرف مخصصة بالكامل باستخدام واجهة Web Crypto API. استخدمها لمفاتيح API ورموز الجلسات ورموز CSRF وأرقام PIN ورموز OTP الرقمية وروابط إعادة تعيين كلمة المرور التي تتطلب عشوائية تشفيرية.

كل البايتات تأتي من crypto.getRandomValues، نفس المصدر الذي يستعمله المتصفح لتوليد مفاتيح TLS. تختار طولاً خاماً من 16 أو 32 أو 48 أو 64 أو 128 بايت، ولوحة الإنتروبيا تعرض فوراً عدد بِتّات العشوائية في الصيغة المختارة. يمكن توليد حتى 20 رمزاً دفعة واحدة وتنزيلها ملف .txt للتوزيع المجمّع.

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

  1. اختر تنسيق الرمز (سداسي عشري، base64، أبجدي رقمي، آمن لعناوين URL، أرقام فقط، مع رموز، أو أحرفك المخصصة) والطول المطلوب.
  2. انقر على زر التوليد لإنشاء رمز عشوائي آمن تشفيرياً في الحال.
  3. انسخ الرمز أو أنشئ عدة رموز دفعة واحدة للاستخدام الجماعي.

متى تستخدم

  • إصدار مفاتيح API أو أسرار توقيع Webhook أو رموز مصادقة بين الخدمات.
  • إنشاء روابط إعادة تعيين كلمة السر، رموز تأكيد البريد، أو روابط دخول لمرة واحدة.
  • ملء بيانات الاختبار بمعرّفات عشوائية واقعية لا تتعارض.

النتيجة

أنشئ رمزاً سداسياً بطول 256 بت (64 حرفاً) لاستخدامه كمفتاح API: مثل 'a3f8b2c1d4e5f6...'، مع إنتروبيا كاملة من crypto.getRandomValues.

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

كم بِتّاً من الإنتروبيا تحتاج فعلاً مفاتيح API؟
128 بِتّاً هو الحد العملي لأي مفتاح طويل العمر، ويصمد أمام القوة العمياء أكثر مما يحتاج أي تطبيق. للتوقيع وأي عمل تشفيري استخدم 32 بايت (256 بِتّاً). الرموز قصيرة العمر تكتفي بـ 16 بايت.
ما الفرق بين صيغة base64 وصيغة URL-Safe؟
base64 يستعمل + و / وحشو =، وهذه تتعطل عند وضعها في الروابط أو أسماء الملفات. URL-Safe يستبدلها بـ - و _ ويلغي الحشو. كل رمز سيظهر في الـ query string أو المسار أو ترويسة HTTP يفضّل أن يكون URL-Safe.
لماذا إنتروبيا الصيغة الأبجدية الرقمية أقل من hex لنفس عدد البايتات؟
hex وbase64 يضعان كل البِتّات الثمانية لكل بايت في الحرف مباشرة. الأبجدية الرقمية تخرّج كل بايت إلى أحد 62 حرفاً عن طريق المعامل، فتفقد نحو 2 بِتّ لكل بايت وتُدخل انحيازاً طفيفاً. تصلح للمعرّفات لا للأسرار التشفيرية.
هل Math.random() بديل مقبول لو لم تتوفّر Web Crypto؟
لا. Math.random() مولّد عشوائي قابل للتنبؤ، ومهاجم يرى بضع مخرجات يستطيع إعادة إنتاج اللاحقة. Web Crypto موجود في كل متصفح منذ 2014 وفي Node.js الحديث. إن غاب فالأفضل عدم توليد السر أصلاً.
هل يمكن أن يتكرّر الرمز نفسه في تطبيقي؟
مع 16 بايت تحتاج لإصدار نحو 2^64 رمزاً ليصبح التصادم محتملاً (حد عيد الميلاد). في أي عبء عملي، حتى مليارات الرموز، يكون التصادم منعدماً إحصائياً ولا حاجة للتحقق من الفرادة.

أدوات ذات صلة