مولد Hash bcrypt
إنشاء بصمة
الأعلى = أبطأ وأكثر أمانًا. 12 قيمة افتراضية جيدة.
بين حين وآخر يكون لديك hash bcrypt من نسخة احتياطية قديمة وكلمة مرور نصية، وتحتاج معرفة هل يتطابقان. أو لديك كلمة مرور وتريد hash الذي سينتجه عامل cost معين. تفعل هذه الأداة الأمرين: اكتب كلمة مرور فتولد hash جديدا، أو الصق hash ومرشحا فتخبرك هل نجح التحقق — باستخدام نفس المقارنة ثابتة الزمن التي يستخدمها فحص تسجيل الدخول في الإنتاج.
توليد bcrypt أو التحقق منه
-
1
اختر وضعا
ولّد hash جديدا من كلمة مرور، أو تحقق من كلمة مرور مقابل hash موجود من نوع `$2a$` / `$2b$` / `$2y$`.
-
2
للتوليد: أدخل النص وcost
Cost من 4 إلى 14؛ 10-12 طبيعي. ينشأ salt عشوائي من 16 بايت لكل hash.
-
3
للتحقق: الصق hash والنص
تستخرج الأداة salt وcost من hash وتعيد تجزئة النص بنفس المعاملات.
-
4
اقرأ النتيجة
وضع التوليد ينسخ hash بطول 60 محرفا؛ ووضع التحقق يعيد تطابقا أخضر أو عدم تطابق أحمر.
داخل وضع التحقق
مع hash مخزن مثل:
$2b$12$mE2n5YqWjKqT9tXg.OQPoeeHZJ9hdSvOt5wFdRRQwl6yE1vWWY3z6
يقوم المتحقق بما يلي:
- يحلل version (
2b) وcost (12) وsalt (أول 22 محرفا بعد cost) وdigest (آخر 31 محرفا). - يعيد تشغيل bcrypt على النص المرشح باستخدام salt وcost المستخرجين.
- يقارن 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 قد تحتاج مكتبة بدعم صريح للصيغ القديمة.
أدوات ذات صلة
مشفر شفرة Atbash
شفّر النص أو فك تشفيره باستخدام شفرة Atbash، وهي استبدال عبري يطابق A-Z مع Z-A. العملية نفسها تشفر وتفك التشفير.
تشفير / فك تشفير AES
شفر وفك نصا منخفض المخاطر باستخدام شفرات AES في OpenSSL. يتم تجزئة عبارة المرور بـ SHA-256، ويحتوي خرج Base64 على IV زائد النص المشفر.
مرمز شفرة A1Z26
رمز النص باستخدام شفرة A1Z26 (A=1, B=2, ... Z=26) أو فك تسلسل أرقام إلى حروف، مع فاصل قابل للتخصيص.
مشفر ومفكك Base32
شفّر وفك ترميز سلاسل Base32 باستخدام أبجدية RFC 4648. مفيد لأسرار TOTP والرموز غير الحساسة لحالة الأحرف والمعرفات التي يكتبها البشر.
مولد bcrypt
ولّد hash من نوع bcrypt لكلمة مرور نصية. عامل cost قابل للضبط من 4 إلى 14، ومتوافق مع Laravel وDjango وNode وPHP.
مشفر ومفكك Base85
شفّر وفك ترميز Base85 في متغير Adobe Ascii85 (PostScript/PDF) أو Z85 (ZeroMQ). أكثف من Base64 للبيانات الثنائية.