مولّد تجزئة كلمات المرور بbcrypt
صُمم bcrypt خصيصًا لتخزين كلمات المرور: بطيء عن قصد، ومملّح تلقائيًا بحيث لا تنتج كلمتا مرور متطابقتان أبدًا القيمة نفسها من التجزئة.
قراءة تلك السلسلة الغريبة التي تمنحك إياها
تبدو تجزئة bcrypt كضجيج عشوائي من الأحرف، لكن لها بنية ثابتة تستحق المعرفة. تبدأ بعلامة إصدار مثل $2a$ أو $2b$، تليها عامل التكلفة الذي اخترته، ثم اثنان وعشرون حرفًا من الملح العشوائي، وأخيرًا واحد وثلاثون حرفًا من التجزئة الفعلية. كل ما يحتاجه المُتحقِّق يسافر داخل تلك السلسلة الواحدة — وهذا سبب احتوائها بالكامل في عمود واحد من قاعدة البيانات، وسبب أن توليد تجزئة لكلمة المرور نفسها مرتين يعطي سلسلتين مختلفتين صالحتين رغم ذلك كلتاهما. يختلف الملح في كل مرة، لذا يختلف المخرَج في كل مرة؛ وحين يتحقق تطبيقك الخلفي لاحقًا من تسجيل دخول، يقرأ الملح من السلسلة المخزَّنة، ويُجزّئ المحاولة به، ويقارن النتيجة.
أين تستخدم هذه الصفحة فعليًا
في معظم الأحيان تحدث تجزئة bcrypt داخل تطبيقك، لا في متصفح — لكن هناك لحظات تكون فيها تجزئة يدوية الصنع بالضبط ما تحتاجه. مثل تعبئة قاعدة بيانات اختبارية بحسابات تعرف كلمات مرورها. أو إنقاذ حساب مدير مقفل بكتابة تجزئة جديدة مباشرة في جدول المستخدمين. أو التحقق من شكل السلسلة التي ستُنتجها مكتبة معينة قبل تحديد حجم العمود لها. في كل هذه الحالات، تلصق كلمة مرور، وتنسخ التجزئة، وتضعها حيث يتوقعها كود تسجيل الدخول لديك. وثمة أمر واحد لا تفعله أبدًا: مقارنة التجزئات كسلاسل نصية في كودك الخاص. فبسبب الملح، تنتج كلمة المرور نفسها تجزئات مختلفة — يجب أن يمر التحقق عبر دالة المقارنة الخاصة بمكتبتك، والتي تعرف كيف تقرأ الملح مرة أخرى.
اختيار عامل تكلفة يمكنك التعايش معه
كل خطوة في عامل التكلفة تُضاعف العمل، عليك وعلى المهاجم على حد سواء. القيمة ثمانية سريعة ويُفضَّل تركها للتوافق مع الأنظمة القديمة؛ والقيمة عشرة، الافتراضية هنا، هي الخيار الشائع في بيئات الإنتاج؛ والقيمة اثنا عشر تمنحك راحة إضافية إذا كانت عمليات تسجيل الدخول نادرة؛ والقيمة أربعة عشر تستغرق ثوانٍ حتى لتوليدها فقط. وتحذير عادل بخصوص التوقيت: تُشغِّل هذه الصفحة تنفيذًا بلغة JavaScript خالصة، وهو أبطأ من الكود الأصلي على خادمك، لذا عامِل التأخير الذي تشعر به هنا كحد أقصى لا كمقياس أداء — قِسه على الجهاز الذي سيتعامل فعليًا مع عمليات تسجيل الدخول. ولأن التجزئة لا تكون أفضل مما يدخل فيها، يُنتج مولّد كلمات المرور مدخلًا قويًا، أما أي شيء ليس كلمة مرور — ملفات ومستندات ونصوص عادية — فمكانه مولّد تجزئة SHA بدلًا من ذلك.
لماذا bcrypt بدلًا من تجزئة عادية
يمكن اختراق تجزئة SHA العادية لكلمة مرور بسرعة بالقوة الغاشمة على الأجهزة الحديثة. أما bcrypt فبطيء عن قصد — ويتحكم عامل التكلفة تحديدًا بمدى ذلك البطء — ويضيف الملح تلقائيًا، بحيث لا تنتج كلمة المرور نفسها القيمة المخزَّنة نفسها مرتين. ولهذا يبقى خيارًا معياريًا لتخزين كلمات المرور على جانب الخادم.
ما عامل التكلفة الذي ينبغي استخدامه؟
القيمة 10–12 هي الإعداد الافتراضي الشائع في 2026 — مرتفعة بما يكفي لمقاومة الاختراق بالقوة الغاشمة، ومنخفضة بما يكفي كي لا تبطئ عمليات تسجيل الدخول الفعلية بشكل ملحوظ. القيم الأعلى أكثر أمانًا لكنها أبطأ في الحساب عند كل تسجيل دخول.
هل يمكنني استخدام هذا لتجزئة مستند أو نص طويل؟
لا — يقتطع bcrypt أي مُدخل يتجاوز نحو 72 بايت، وهو مصمم خصيصًا لكلمات المرور. لتجزئة النصوص أو الملفات لأغراض عامة، استخدم بدلًا من ذلك مولّد تجزئة SHA.
هل تُرسَل كلمة مروري إلى أي مكان؟
لا — تتم عملية التجزئة بالكامل داخل متصفحك بلغة JavaScript فقط. لا يُرفع أي شيء.
