أنشئ تجزئات bcrypt بالملح لكلمات المرور وتحقق من النص الصريح مقابل تجزئة موجودة، كل ذلك في متصفحك.
أنشئ تجزئات bcrypt بالملح لكلمات المرور وتحقق من النص الصريح مقابل تجزئة موجودة، كل ذلك في متصفحك. أنشئ تجزئات bcrypt بالملح لكلمات المرور وتحقق من النص الصريح مقابل تجزئة موجودة، كل ذلك في متصفحك.
تجزئة bcrypt المولدة
خلفية
ما هو bcrypt ولماذا يهم
bcrypt هي دالة تجزئة كلمات مرور متكيفة صممها Niels Provos وDavid Mazieres في عام 1999. على عكس المختصرات السريعة مثل MD5 أو SHA-256، يكلف bcrypt وقت وحدة المعالجة عمدًا: تشغّل كل تجزئة شفرة Blowfish عبر عدد قابل للتكوين من الجولات، ويتضاعف العمل مع كل زيادة في عامل التكلفة. هذا التباطؤ هو ما يجعل هجمات القاموس والقوة الغاشمة دون اتصال مكلفة. كما يدمج تطبيق bcrypt الصحيح ملحًا عشوائيًا من 128 بت داخل سلسلة المخرجات، لذا فإن تجزئتين لنفس كلمة المرور مختلفتان دائمًا وتكون جداول قوس قزح عديمة الفائدة ضده.
كيف تقرأ تجزئة bcrypt
تبدو تجزئة bcrypt مثل $2b$12$e0.6kJ8a5X8u5Yp3qR5E0e9dF4z3W2c1v0b9n8m7l6k5j4h3g2f1. الأجزاء بعد علامات الدولار الرائدة تحمل إصدار الخوارزمية والتكلفة والملح:
$2b$ -- مراجعة الخوارزمية. $2a$ و$2y$ متغيران أقدم مع اختلافات معالجة دقيقة لخلل الإشارة ذات 8 بت؛ $2b$ هو التوصية الحالية وما ينتجه bcryptjs.
12 -- عامل التكلفة. 2^12 = 4096 جولة من جدول المفاتيح. كل +1 يضاعف الوقت؛ 10-12 افتراضي معقول لتسجيل الدخول التفاعلي، بينما يناسب 12-14 بيانات الاعتماد المخزنة.
الـ53 حرفًا المتبقية تحمل ملح base64 من 22 حرفًا (128 بت) بالإضافة إلى مجموع تحقق من 31 حرفًا (184 بت). السلسلة بأكملها سجل مكتفٍ بذاته: يقرأ المدقق الإصدار والتكلفة والملح من التجزئة ويعيد تشغيل الاشتقاق للمقارنة.
كيفية استخدام هذه الأداة
اكتب كلمة مرور في الإدخال، واختر عامل تكلفة، واضغط على "توليد التجزئة". تظهر التجزئة المولدة في صندوق المخرجات وتوضع أيضًا في حقل التحقق. للتحقق من تجزئة موجودة، الصقها في حقل التحقق واكتب كلمة المرور المرشحة في الإدخال: تقارن الصفحة فورًا وتظهر علامة خضراء أو صليبًا أحمر. ولأن المقارنة تتم باستخدام bcrypt.compareSync، فإنها لا تكشف أبدًا مدى قرب التخمين الخاطئ — كل محاولة تُجزَّأ بالكامل قبل تحديد النتيجة.
ملاحظات وقيود الأمان
يقتطع bcrypt الإدخال إلى 72 بايتًا: تُقص كلمات المرور الأطول بصمت، لذا تتساوى كلمتا مرور تشتركان في أول 72 بايتًا. إذا كنت بحاجة إلى مدخلات أطول، فجزّئ مسبقًا باستخدام SHA-256 (بترميز سداسي عشري) وجزّئ ذلك المختصر بدلاً من ذلك. Bcrypt خوارزمية خفيفة الذاكرة عمدًا — تقاوم مصفوفات GPU بشكل أقل من التصاميم الثقيلة الذاكرة مثل Argon2 أو scrypt، لكن جدولها 4 KB وحالتها 64 بايتًا ما زالا يجعلان كسر ASIC الرخيص غير جذاب. بالنسبة للأنظمة الجديدة تمامًا، غالبًا ما يكون Argon2id خيارًا أفضل؛ يبقى bcrypt خيارًا ممتازًا ومدعومًا على نطاق واسع للتوافق القديم وللحالات التي لا يستطيع فيها وقت التشغيل توفير Argon2. تعمل هذه الصفحة بالكامل في متصفحك: لا تخرج كلمة المرور والتجزئة من جهازك أبدًا، ويمكنك فحص مسار الكود (MIT/BSD bcryptjs) المدمج في public/assets.
الأسئلة الشائعة
لماذا تنتج نفس كلمة المرور تجزئة مختلفة في كل مرة؟
يُنشأ ملح عشوائي من 128 بت لكل تجزئة ويُدمج في المخرجات. يعيد المدقق قراءة الملح من التجزئة، لذا لا تتأثر الصحة، لكن المدخلات المتطابقة لا تنتج أبدًا مخرجات متطابقة.
ما عامل التكلفة الذي يجب أن أستخدمه؟
لتسجيل الدخول التفاعلي، 10-12 افتراضي جيد. لبيانات الاعتماد المخزنة قد تريد 12-14. التكاليف الأعلى أكثر أمانًا لكنها أبطأ؛ اختر أكبر قيمة يستطيع خادمك تحملها لكل تسجيل دخول.
هل ما زال bcrypt موصى به في عام 2026؟
نعم. يظل bcrypt منتشرًا على نطاق واسع ويُعتبر آمنًا عند استخدامه بتكلفة 10+. للأنظمة الجديدة تمامًا، غالبًا ما يُفضَّل Argon2id أو scrypt كثيفا الذاكرة، لكن bcrypt خيار جيد ومُختبَر في المعارك، خاصةً حيث تكون هذه غير متاحة.
لماذا bcrypt أبطأ من SHA-256؟
هذا هو الهدف. صُمم SHA-256 ليكون سريعًا، مما يسمح للمهاجمين بمحاولة مليارات التخمينات في الثانية. جدول مفاتيح bcrypt المكلف وملحه يجبران المهاجمين على قضاء وقت حقيقي لكل تخمين، مما يجعل الهجمات دون اتصال غير عملية.
ماذا يعني حد الـ72 بايت لكلمات مروري؟
يتجاهل bcrypt كل ما بعد البايت 72. كلمتا مرور أطول من 72 بايتًا تشتركان في نفس البادئة ستُتحققان بشكل متطابق. لدعم الأسرار الأطول، جزّئها بـ SHA-256 أولاً (كسداسي عشري) وجزّئ المختصر.
هل تُرسل كلمة مروري إلى خادم؟
لا. يعمل كل شيء محليًا في متصفحك مع مكتبة bcryptjs المدمجة. يمكنك فصل الاتصال بالشبكة بعد تحميل الصفحة وسيظل يعمل.