مولّد Bcrypt
أنشئ تجزئة كلمة مرور باستخدام bcrypt مع ملح عشوائي بطول 16 بايت ومعامل كلفة من 4 إلى 12. تُرجع الأداة سلسلة التشفير المعيارية المعيارية التي تبدأ بـ $2a$، والتي تقبلها PHP password_verify وNode.js bcrypt وSpring Security ومعظم الأطر. استخدمها لإعداد مستخدمين للاختبار، أو إعادة تعيين كلمة مرور مسؤول في قاعدة بيانات، أو التحقق من كود التجزئة الخاص بك. لا تُعرض كلمة المرور مطلقًا ولا تُخزّن.
الأسئلة الشائعة
ما هو bcrypt؟
bcrypt هي دالة لتجزئة كلمات المرور من 1999، وتعتمد على شفرة Blowfish. تجمع بين ملح عشوائي وكلفة قابلة للضبط، بحيث تضاعف كل زيادة في الكلفة الجهد الذي يحتاج إليه المهاجم لكل تخمين. ولا تزال خيارًا واسع الدعم لتخزين كلمات المرور.
ما معنى سلسلة الإخراج؟
تحتوي تجزئة مثل $2a$10$ متبوعة بـ 53 محرفًا على الإصدار 2a والكلفة 10 وملح من 22 محرفًا وتجزئة من 31 محرفًا، وكلها بأبجدية bcrypt الخاصة Base64. خزّن السلسلة كاملة لأن أداة التحقق تقرأ منها الملح والكلفة.
أي معامل كلفة ينبغي أن أختار؟
تتيح الأداة كلفة من 4 إلى 12، وتستخدم 10 افتراضيًا، وهو إعداد افتراضي شائع في الأطر. تضاعف كل خطوة الوقت، لذا تستغرق الكلفة 12 نحو أربعة أضعاف مدة الكلفة 10. في بيئة الإنتاج، اختر أعلى كلفة تستطيع خوادمك التعامل معها خلال نحو 100 إلى 250 مللي ثانية.
لماذا تقتصر الكلفة على 12؟
تستغرق الكلف الأعلى ثوانٍ لكل تجزئة، وقد تجعل طلبًا واحدًا يشغل الخادم مدة طويلة. الكلفة 12 قوية بالفعل لمعظم التطبيقات، ويمكنك إعادة التجزئة بكلفة أعلى في بيئتك إذا لزم الأمر.
لماذا تنتج كلمة المرور نفسها تجزئة مختلفة في كل مرة؟
تنشئ الأداة ملحًا عشوائيًا جديدًا بطول 16 بايت لكل تجزئة. تنتج الأملاح المختلفة سلاسل مختلفة، لكن يمكن التحقق من كلٍّ منها باستخدام كلمة المرور نفسها. وهذا يمنع المهاجمين من استخدام جداول محسوبة مسبقًا.
هل يوجد حد لطول كلمة المرور؟
نعم. يستخدم bcrypt أول 72 بايتًا فقط من كلمة المرور، لذا ترفض الأداة كلمات المرور الأطول بدلًا من تجاهل بقية الأحرف بصمت. تستهلك الأحرف غير ASCII عدة بايتات لكل حرف في UTF-8.
هل يقبل PHP أو Laravel تجزئة $2a$؟
نعم. تقبل إضافات PHP password_verify وLaravel وSymfony وWordPress التي تستخدم password_hash تجزئات $2a$ و$2b$ و$2y$، وهي تختلف فقط في إصلاحات أخطاء تاريخية. كما يقبل Node.js bcrypt وbcryptjs وPython bcrypt وSpring Security تجزئات $2a$ أيضًا.
هل تُخزَّن كلمة مروري أو تُسجَّل؟
لا. تُستخدم كلمة المرور فقط لحساب التجزئة أثناء الطلب. وتُحذف من الاستجابة ولا تُكتب مطلقًا في السجلات أو وحدة التخزين.
هل أستخدم bcrypt أم Argon2؟
توصي OWASP حاليًا باستخدام Argon2id لأنه يتطلب ذاكرة، ما يجعل هجمات GPU أكثر تكلفة. وما زال bcrypt خيارًا مقبولًا ومدعومًا على نطاق واسع في المكتبات، لذا فهو خيار موثوق عندما لا يتوفر Argon2.
كيف أتحقق من كلمة مرور باستخدام تجزئة bcrypt؟
استخدم أداة Bcrypt Verifier على هذا الموقع، أو استدعِ دالة التحقق في إطار العمل الذي تستخدمه. لا تقارن سلاسل bcrypt مباشرةً أبدًا، لأن تجزئة جديدة لكلمة المرور نفسها ستبدو مختلفة دائمًا.