مولد bcrypt
ما زال bcrypt أحد أكثر الخيارات أمانا لتخزين كلمات المرور. فهو بطيء عمدا، ويشتق salt الخاص به، ويتدرج أمام تحسن العتاد عبر معامل cost قابل للضبط. يولد هذا المولد hash متوافقا مع معيار bcrypt من كلمة مرور نصية حتى تستطيع إنشاء مستخدم اختبار، أو ترحيل حساب بين أنظمة، أو مقارنة القيم مع hash موجود في عمود users.password.
كيفية تجزئة كلمة مرور باستخدام bcrypt
-
1
أدخل كلمة المرور النصية
حتى 72 بايت: يقتطع bcrypt ما بعد ذلك بصمت.
-
2
اختر عامل cost
12 هو الافتراضي في هذا المولد؛ 10 اختيار أسرع من الأجيال السابقة؛ 13 أقوى إعداد متاح هنا. كل +1 يضاعف زمن التجزئة تقريبا.
-
3
ينشأ salt عشوائي
تسحب 16 بايت من salt من RNG تشفيري وتدمج داخل سلسلة hash الناتجة.
-
4
انسخ hash
الخرج سلسلة تصف نفسها مثل `$2b$12$...` وتتضمن version وcost وsalt وdigest.
تشريح hash من bcrypt
$2b$12$mE2n5YqWjKqT9tXg.OQPoeeHZJ9hdSvOt5wFdRRQwl6yE1vWWY3z6
| | | |
| | salt (22 Base64 chars) digest (31 Base64 chars)
| cost (2 digits, 4-31)
version (2a, 2b, 2y، all bcrypt)
السلسلة كلها 60 محرفا. الأعمدة من نوع VARCHAR(60) أو CHAR(60) هي المخطط القياسي.
توصيات عامل cost
| Cost | الزمن التقريبي لكل hash (2024 CPU) | الاستخدام |
|---|---|---|
| 10 | ~80 ms | افتراضي legacy، ما زال مقبولا |
| 12 | ~300 ms | خط الأساس الموصى به حاليا |
| 13 | ~600 ms | تطبيقات أعلى أمانا |
| 14 | ~1.2 s | خارج نطاق هذه الأداة (الحد الأقصى 13) |
كل زيادة تضاعف عامل العمل. إذا كانت زمنية تسجيل الدخول تحت 500 ms حرجة، فابق بين 10 و12.
بايت الإصدار: 2a مقابل 2b مقابل 2y
$2a$، مواصفة 1999 الأصلية. معظم المكتبات تصدر hashes بعلامة2a.$2b$، مراجعة 2014 التي أصلحت خطأ اقتطاع في crypt_blowfish. مفضل للـ hashes الجديدة.$2y$، وسم خاص بـ PHP، ومكافئ وظيفيا لـ$2b$.
تتحقق الثلاثة ضد بعضها؛ الاختلاف الوحيد هو الوسم داخل سلسلة hash.
مما يحمي bcrypt
- Rainbow tables، salt فريد لكل hash يهزم الجداول المحسوبة مسبقا.
- GPU/ASIC cracking، جدول مفاتيح Blowfish مقيد بالذاكرة وعدائي تجاه GPUs. ليس معاديا لـ GPU مثل Argon2، لكنه ما زال بطيئا في brute force.
- Database leaks، لا يمكن استرجاع النص الصريح من hash إلا بالقوة الغاشمة.
ما لا يحمي منه bcrypt: كلمات المرور الضعيفة (استخدم حدا أدنى للطول وافحص قوائم التسريبات)، وcredential stuffing (استخدم عاملا ثانيا)، والتصيد.
حد 72 بايت
يستخدم bcrypt أول 72 بايت فقط من كلمة المرور. المدخلات الأطول تقتطع بصمت، وهذا هو السبب نفسه الذي يجعل كثيرا من المكتبات توصي الآن بتجزئة كلمة المرور مسبقا بـ SHA-256 قبل تمريرها إلى bcrypt. البدائل الحديثة (Argon2 وscrypt) لا تملك هذا الحد.
الأسئلة الشائعة
نعم لتخزين كلمات المرور، عند cost ≥ 12. ما زال OWASP يدرجه كخوارزمية مقبولة. Argon2id هو الخيار المفضل للأنظمة الجديدة، لكن ترحيل hashes bcrypt القديمة ليس أولوية عالية.
لأن salt يولد عشوائيا لكل hash. يأخذ التحقق salt من hash المخزن، ويعيد تجزئة كلمة المرور المرسلة به، ثم يقارن.
معظم المكتبات لا تكشف هذا الخيار، ولسبب وجيه، salts القابلة للتنبؤ تهزم الفكرة. استخدم salt الذي تولده المكتبة؛ هذا هو المسار الآمن.
كل +1 يضاعف زمن التجزئة تقريبا، لذا فإن cost 13 يستغرق نحو 8 أضعاف cost 10. ابق ضمن 10-12 ما لم تكن حاجتك الفعلية تستدعي قوة إضافية.
أدوات ذات صلة
مولّد عبارات المرور
ولّد عبارة مرور سهلة التذكر من كلمات شائعة عشوائية، مع عدد كلمات وفاصل وأحرف كبيرة قابلة للضبط ورقم اختياري مُلحق.
مولّد مفاتيح PGP
أنشئ زوج مفاتيح OpenPGP مدرّعًا بنظام ASCII وشهادة إبطال باستخدام Curve25519 أو RSA 2048 أو RSA 4096.
شيفرة الأرقام إلى الحروف
حوّل الأرقام إلى حروف والعكس باستخدام شيفرة A=1، B=2 (A1Z26) للألغاز والأحاجي وإشارات غرف الهروب.
مولد مفاتيح برمجة التطبيقات العشوائي
أنشئ على الخادم مفاتيح API بطول 8–128 حرفًا بصيغة hex أو base64url أو أبجدية رقمية، أو أنشئ UUIDv4.
مولّد مفاتيح SSH
أنشئ زوج مفاتيح SSH من نوع RSA (2048 أو 3072 أو 4096 بت) بالكامل داخل متصفحك. لا يغادر جهازك أي من المفتاح الخاص أو العام. أضف تعليقًا ونزّل كليهما.
أداة ترميز شفرة بوليبيوس
حوّل الحروف اللاتينية إلى إحداثيات بوليبيوس أو فك الأزواج المفصولة بمسافات باستخدام شبكة 5×5 الثابتة التي تدمج I وJ.
الأداة متاحة بلغات أخرى
- bcryptジェネレーター [JA]
- bcrypt-generator [NL]
- Generator bcrypt [ID]
- Generator bcrypt [PL]
- Gerador de bcrypt [PT]
- Generador bcrypt [ES]
- bcrypt-generator [SV]
- Générateur bcrypt [FR]
- Trình tạo bcrypt [VI]
- bcrypt 생성기 [KO]
- bcrypt-Generator [DE]
- ตัวสร้าง bcrypt [TH]
- bcrypt Generator [EN]
- Generatore bcrypt [IT]
- Генератор bcrypt [RU]
- bcrypt Oluşturucu [TR]
- bcrypt 生成器 [ZH]