مولد Hash bcrypt

إنشاء بصمة

الأعلى = أبطأ وأكثر أمانًا. 12 قيمة افتراضية جيدة.

بين حين وآخر يكون لديك hash bcrypt من نسخة احتياطية قديمة وكلمة مرور نصية، وتحتاج معرفة هل يتطابقان. أو لديك كلمة مرور وتريد hash الذي سينتجه عامل cost معين. تفعل هذه الأداة الأمرين: اكتب كلمة مرور فتولد hash جديدا، أو الصق hash ومرشحا فتخبرك هل نجح التحقق — باستخدام نفس المقارنة ثابتة الزمن التي يستخدمها فحص تسجيل الدخول في الإنتاج.

توليد bcrypt أو التحقق منه

  1. 1

    اختر وضعا

    ولّد hash جديدا من كلمة مرور، أو تحقق من كلمة مرور مقابل hash موجود من نوع `$2a$` / `$2b$` / `$2y$`.

  2. 2

    للتوليد: أدخل النص وcost

    Cost من 4 إلى 14؛ 10-12 طبيعي. ينشأ salt عشوائي من 16 بايت لكل hash.

  3. 3

    للتحقق: الصق hash والنص

    تستخرج الأداة salt وcost من hash وتعيد تجزئة النص بنفس المعاملات.

  4. 4

    اقرأ النتيجة

    وضع التوليد ينسخ hash بطول 60 محرفا؛ ووضع التحقق يعيد تطابقا أخضر أو عدم تطابق أحمر.

داخل وضع التحقق

مع hash مخزن مثل:

$2b$12$mE2n5YqWjKqT9tXg.OQPoeeHZJ9hdSvOt5wFdRRQwl6yE1vWWY3z6

يقوم المتحقق بما يلي:

  1. يحلل version (2b) وcost (12) وsalt (أول 22 محرفا بعد cost) وdigest (آخر 31 محرفا).
  2. يعيد تشغيل bcrypt على النص المرشح باستخدام salt وcost المستخرجين.
  3. يقارن digest الناتج بالأصلي باستخدام مقارنة ثابتة الزمن.

المقارنة الناجحة تعطي true؛ وأي اختلاف يعطي false.

المقارنة ثابتة الزمن

مقارنة سلسلتين باستخدام == الساذج تعود فور اختلاف أول بايت — قناة توقيت جانبية قد تسرب hash رقما بعد رقم عبر عدد كاف من العينات. تستخدم فحوص كلمات المرور في الإنتاج (وهذه الأداة) مقارنة ثابتة الزمن تفحص كل بايت دائما، لذلك لا يعتمد زمن القرار على عدد البايتات الأولى المتطابقة.

حالات تشخيص شائعة

العرض السبب المرجح
يفشل التحقق وأنت متأكد من كلمة المرور مسافات بيضاء لاحقة أو BOM في الإدخال. أزل الاثنين.
يفشل التحقق مع version 2y بعض المكتبات لا تحب 2y؛ لكنه صالح ومتوافق. أعد التجزئة بـ 2b لاحقا.
Hash قصير جدا / مشوه ليس hash من bcrypt. MD5 طوله 32 محرف hex، وSHA-1 طوله 40، وbcrypt طوله 60 مع فواصل $.
تحذير اختلاف cost cost المخزن أدنى من الحد الأدنى لسياستك. أعد التجزئة عند أول تسجيل دخول ناجح.

إعادة التجزئة عند تسجيل الدخول

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

ما لا تفعله الأداة

  • التحقق المجمّع — مصممة لـ hash واحد في كل مرة.
  • الكسر أو التخمين الشامل — هجمات القاموس أو rainbow-table خارج النطاق عمدا.
  • استرجاع كلمة المرور الأصلية — bcrypt أحادي الاتجاه؛ إذا نسيت كلمة المرور فالمسار الوحيد هو إعادة التعيين.

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

لا. تتم التجزئة والتحقق في المتصفح. لا يغادر النص الصريح ولا hash الصفحة.

لأن salt يولد عشوائيا لكل hash. هذه هي الفكرة كلها — مستخدمان لهما كلمة المرور نفسها يحصلان على hashes مختلفة، مما يهزم جداول قوس قزح (rainbow tables).

نعم، هذا بالضبط ما يفعله وضع التحقق: الصق hash الذي لديك، والصق كلمة مرور مرشحة، فتؤكد الأداة التطابق أو تنفيه.

نعم. كل المتغيرات الحديثة تعمل معا — digest متوافق عبر الإصدارات؛ الاختلاف في الوسم فقط. بعض hashes $2$ القديمة من أنظمة حقبة 2000 قد تحتاج مكتبة بدعم صريح للصيغ القديمة.

أدوات ذات صلة