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

bcrypt تجزئة وتحقّق

التشفير

جزّئ كلمة مرور باستخدام bcrypt (تكلفة تكيّفية)، أو تحقّق من نص مجرّد مقابل تجزئة $2a$ / $2b$ موجودة. تكلفة قابلة للضبط وتوقيت مُعايَر — بالكامل داخل متصفّحك.

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

لا يتم جلب الروابط البعيدة؛ الصق JSON مباشرة.

الوضع
12

⚠ التكلفة الأعلى أبطأ وأكثر أمانًا

أدخل كلمة مرور ثم اضغط تجزئة (cost %n).
bcrypt

🔒 يُعالَج محليًا — لا شيء يغادر متصفّحك
في هذه الصفحة

ما هو bcrypt؟#

bcrypt دالة تجزئة كلمات مرور بُنيت تحديدًا لتكون بطيئة عمدًا. فحيث صُمِّم الهاش السريع مثل SHA-256 لمعالجة ميغابايت في الثانية، صُمِّم bcrypt ليكلف وقتًا حقيقيًّا في كلّ تخمين مفرد — بحيث لا يستطيع مهاجم يسرق قاعدة بيانات من هاشات كلمات المرور تجربة مليارات التخمينات رخيصًا. إنه الجواب المعياري عن «كيف ينبغي تخزين كلمات مرور المستخدمين»: جزّئها بـ bcrypt، لا بـ SHA-256 المجرّد.

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

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

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

  1. اختر الوضع: تجزئة (إنتاج سلسلة bcrypt من كلمة مرور) أو تحقّق (فحص كلمة مرور مقابل هاش موجود).
  2. اكتب كلمة المرور. انقر أيقونة العين لكشفها أثناء الكتابة؛ فهي مقنّعة افتراضيًّا. يُقبَل UTF-8، بما في ذلك الإيموجي والكتابات غير اللاتينية.
  3. في وضع التجزئة، اضبط شريط تمرير عامل التكلفة (4–14، الافتراضي 12). الأعلى أبطأ وأقوى. ويظهر تحذيرٌ ما إن تصبح التكلفة عالية بما يكفي لتأخذ وقتًا ملحوظًا.
  4. في وضع التحقّق، الصق التجزئة الموجودة في الحقل الذي يظهر. تُقرأ التكلفة تلقائيًّا من الهاش نفسه — لا تضبطها أنت.
  5. انقر الزرّ الأساسي. في وضع التجزئة المخرج هو سلسلة bcrypt؛ وفي وضع التحقّق المخرج حكم واضح بالمطابقة أو اللا مطابقة، مع قراءة الوقت المنقضي تساعدك على الحكم على التكلفة في عتادك.

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

  • تكلفة قابلة للضبط، 4–14. الافتراضي 12 هو التوصية الحديثة؛ وكلّ خطوة تضاعف العمل تقريبًا، فتستطيع مجاراة العتاد الأسرع عبر السنين.
  • تفريغ إلى Worker عند التكلفة العالية. التكلفة 12 فأعلى تجري في Web Worker لتبقى الصفحة متجاوبة؛ وإن حُجبت الـ Workers، يتحوّل بشفافية إلى الخيط الرئيسي بالنتيجة نفسها.
  • مِلح مدمج. يحصل كلّ هاش على مِلح عشوائي طازج مرمَّز في المخرج، فلا تُجزَّأ الكلمة نفسها أبدًا إلى السلسلة نفسها مرّتين.
  • تحقّق بتكلفة تلقائية. يُحلَّل عامل التكلفة من الهاش الذي تلصقه، فلا عدم تطابق بين كيف جُزِّئت كلمة المرور وكيف تُفحَص.
  • رفع صفري. التجزئة والتحقّق محليّان؛ كلمة المرور لا تغادر الصفحة.

مثال عملي#

في الأسفل هاش حقيقي لـ hunter2 عند التكلفة 12، أنتجته هذه الصفحة نفسها. لأنّ المِلح طازج عشوائي، فإنّ تجزئة hunter2 مجدّدًا ستُعطيك سلسلة مختلفة — لكنّ هذه صحيحة وقابلة للتحقّق: الصقها في وضع التحقّق، اكتب hunter2، فيكون الحكم مطابق.

$2b$12$DG/IWIDBmJlywamLdGno2.guEH5lGnQ1OTULdIGN8BH1vqiLIGzjy

قراءته حقلًا بحقل:

  • $2b$ — متغيّر bcrypt (يُصدِر bcryptjs $2b$؛ والتحقّق يقبل أيضًا $2a$ و$2x$ و$2y$).
  • 12 — عامل التكلفة، أي 2^12 جولة توسيع مفاتيح.
  • المحارف الـ 22 التالية — المِلح العشوائي.
  • المحارف الـ 31 الأخيرة — الهاش المشتقّ.

بدِّل إلى تحقّق، أفلِت الهاش أعلاه في حقل التجزئة الموجودة، اكتب hunter2، فيكون الحكم مطابق. اكتب Hunter2 بدلًا منها فيكون غير مطابق — فـ bcrypt حسّاس لحالة الأحرف، ومحرف واحد خاطئ يقلب النتيجة. ورقم الوقت المنقضي المعروض جنبًا إلى جنب هو التكلفة الحقيقية لتحقّق واحد عند التكلفة 12 على جهازك.

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

أيّ تكلفة يجب أن أختار؟#

12 افتراضيّ متين للأنظمة الجديدة اليوم — يأخذ بضع مئات من المللي ثانية تقريبًا على عتاد نموذجي، وهو غير مؤلم لتسجيل دخول حقيقي لكنه مؤلم للتخمين بالجملة. ارفعه إلى 13 أو 14 للأهداف عالية القيمة حيث تسجيل الدخول الأبطأ قليلًا مقبول. والقاعدة الأساسية إعادة الضبط للأعلى عبر السنين كلّما تحسّن العتاد، لأنّ تكلفة bcrypt تُحجَّم أُسّيًّا: كلّ زيادة بمقدار 1 تضاعف الوقت تقريبًا.

لماذا تُعطي تجزئة كلمة المرور نفسها مرّتين نتائج مختلفة؟#

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

هل أستطيع التحقّق من هاش وُلِّد في مكان آخر؟#

نعم، ما دام سلسلة bcrypt صحيحة البناء ($2a$ أو $2b$ أو $2x$ أو $2y$). الصقها في حقل التجزئة الموجودة في وضع التحقّق؛ تقرأ الأداة التكلفة والمِلح من الهاش نفسه. الهاشات المُصدَّرة من bcrypt في Node، أو password_hash في PHP، أو passlib في Python تعمل كلّها هنا.

هل bcrypt أفضل من SHA-256 لكلمات المرور؟#

لتخزين كلمات مرور تسجيل الدخول، نعم — بلا تردّد. SHA-256 سريع، وهي بالضبط الخاصية الخطأ لهاش كلمة مرور مخزَّنة: فالمهاجم الذي يملك الهاش يستطيع تجربة مليارات التخمينات في الثانية على GPU. أمّا bcrypt فبطيء عمدًا ومُملَّح، وهذا ما تتطلّبه عملية تخزين كلمات المرور. استخدم SHA-256 للسلامة والتوقيعات؛ واستخدم bcrypt (أو أبناء عمومته Argon2/scrypt) لكلمات مرور البشر.