مولد 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 ما لم تكن حاجتك الفعلية تستدعي قوة إضافية.
أدوات ذات صلة
مشفر ملفات Base64
شفّر أي ملف (PDF، ZIP، صورة، ملف تنفيذي) إلى نص Base64 للتضمين في JSON أو البريد أو YAML أو data URIs. يعمل محليا، بلا رفع.
مرمز شفرة A1Z26
رمز النص باستخدام شفرة A1Z26 (A=1, B=2, ... Z=26) أو فك تسلسل أرقام إلى حروف، مع فاصل قابل للتخصيص.
مشفّر قيصر
شفّر وفك تشفير النص باستخدام شفرة قيصر. أي إزاحة من 1-25، مع دعم ROT13 كحالة خاصة، والحفاظ على علامات الترقيم وحالة الأحرف.
مولد Hash bcrypt
ولّد hashes من نوع bcrypt أو تحقق من كلمة مرور نصية مقابل hash bcrypt موجود. وضعا التوليد والتحقق جنبا إلى جنب في أداة واحدة.
مشفر ومفكك Base58
رمّز نص UTF-8 أو بايتات سداسية عشرية وفك Base58 بأمان باستخدام أبجدية Bitcoin أو Ripple أو Flickr، مع رفض المحارف غير الصالحة.
مشفر شفرة Atbash
شفّر النص أو فك تشفيره باستخدام شفرة Atbash، وهي استبدال عبري يطابق A-Z مع Z-A. العملية نفسها تشفر وتفك التشفير.
الأداة متاحة بلغات أخرى
- Generador bcrypt [ES]
- ตัวสร้าง bcrypt [TH]
- bcrypt-generator [NL]
- bcrypt 生成器 [ZH]
- bcrypt 생성기 [KO]
- Générateur bcrypt [FR]
- bcrypt-generator [SV]
- Generator bcrypt [ID]
- Gerador de bcrypt [PT]
- bcrypt-Generator [DE]
- bcrypt Oluşturucu [TR]
- Generator bcrypt [PL]
- bcrypt Generator [EN]
- bcryptジェネレーター [JA]
- Trình tạo bcrypt [VI]
- Generatore bcrypt [IT]
- Генератор bcrypt [RU]