Pack Camo

مولد هاش bcrypt وArgon2

أنشئ هاش كلمة مرور باستخدام bcrypt أو Argon2id، أو تحقق منها مقابل هاش محفوظ.

كل شيء يعمل محليًا — لا يُرفع أي شيء.

28 بايت

يظهر الهاش المرمّز هنا.

أنشئ هاش كلمة مرور باستخدام bcrypt أو Argon2، أو قارنها بهاش محفوظ

ينشئ مولد هاش كلمات المرور هذا هاشات bcrypt (<code>$2b$</code>، تكلفة من 4 إلى 15) وهاشات Argon2id وArgon2i وArgon2d بصيغة سلسلة PHC القياسية، مع الذاكرة وعدد التكرارات والتوازي وطول الملح والناتج التي تحددها. انتقل إلى <strong>التحقق</strong> للصق هاش من قاعدة بياناتك، والتعرف على خوارزميته ومعاملاته من البادئة، واختبار ما إذا كانت كلمة المرور مطابقة. يستخدم كل هاش ملحًا عشوائيًا جديدًا ويعرض الوقت الذي استغرقه على جهازك. تعمل عملية الهاش عبر WebAssembly في متصفحك؛ ولا تُرفع كلمة المرور أبدًا.

كيفية إنشاء هاش bcrypt أو Argon2

  1. 1اختر هاش، ثم الخوارزمية: Argon2id للأنظمة الجديدة، وbcrypt للتوافق مع نظام قائم.
  2. 2اضبط التكلفة: معامل تكلفة bcrypt، أو إعدادًا مسبقًا لـ Argon2 مثل OWASP 19 MiB, t=2. عدّل الذاكرة والتكرارات والتوازي يدويًا إذا احتجت إلى مطابقة إعداد معين.
  3. 3اكتب كلمة المرور واضغط إنشاء الهاش. يظهر أدناه الهاش المرمّز وأجزاؤه والوقت الذي استغرقه.
  4. 4للتحقق من هاش، اختر التحقق، والصق الهاش المحفوظ وكلمة المرور، ثم اضغط تحقق.

لماذا تحتاج كلمات المرور إلى هاش بطيء

الهاش السريع مثل SHA-256 أداة خاطئة لكلمات المرور. فبطاقة رسومات واحدة تحسب مليارات هاشات SHA-256 في الثانية، لذا يمكن تخمين جدول مسرَّب من هاشات SHA-256 لكلمات المرور بهذه السرعة. صُممت دوال هاش كلمات المرور لتكون بطيئة، وفي حالة Argon2 لتحتاج إلى ذاكرة كبيرة، بحيث تكلّف كل محاولة تخمين وقتًا وعتادًا حقيقيين. والإعداد الذي يستغرق ربع ثانية على خادمك يكلّف المهاجم ربع الثانية نفسه لكل تخمين ولكل مستخدم.

يحمل كل هاش أيضًا ملحه العشوائي الخاص، فيحصل مستخدمان لهما كلمة المرور نفسها على هاشين مختلفين، وتصبح الجداول المحسوبة مسبقًا بلا فائدة. يُخزَّن الملح وجميع المعاملات داخل سلسلة الهاش، ولهذا تستطيع المكتبة التحقق من كلمة المرور اعتمادًا على الهاش وحده.

قراءة هاش bcrypt

يتكون هاش bcrypt مثل $2b$12$R9h/cIPz0gi.URNNX3kh2OPST9/PgBkqquzi.Ss7KIUgO2t0jWMUW من أربعة أجزاء: الإصدار 2b، والتكلفة 12 (212 = 4,096 جولة من توسيع المفتاح)، وملح من 22 حرفًا، وهاش من 31 حرفًا، وكلاهما بأبجدية Base64 الخاصة بـ bcrypt. كل زيادة بدرجة واحدة في التكلفة تضاعف الوقت.

تعطي $2a$ و$2b$ و$2y$ النتيجة نفسها لكلمات المرور حتى 72 بايت؛ وتشير الحروف إلى إصلاحات لأخطاء في تطبيقات قديمة. يقرأ bcrypt أول 72 بايت فقط من كلمة المرور ويتجاهل الباقي، وهذه الأداة تنبّهك إلى ذلك — فعبارة مرور طويلة، أو كلمة مرور بخط غير لاتيني كالعربية حيث يشغل الحرف من بايتين إلى أربعة بايتات، قد تبلغ هذا الحد أسرع مما تتوقع.

Argon2id وArgon2i وArgon2d

تسجّل سلسلة PHC كل ما يلزم للتحقق: $argon2id$v=19$m=19456,t=2,p=1$<salt>$<hash> تعني الإصدار 1.3، و19,456 KiB من الذاكرة، وتمريرتين، ومسارًا واحدًا، يليها الملح والهاش بترميز Base64 دون حشو.

Argon2id
مزيج من النوعين أدناه، وهو النوع الذي توصي به RFC 9106 وOWASP لتخزين كلمات المرور. استخدمه ما لم يُلزمك شيء بغيره.
Argon2i
الوصول إلى الذاكرة مستقل عن كلمة المرور، ما يقاوم هجمات القنوات الجانبية، لكنه أضعف أمام الكسر بوحدات GPU عند قلة عدد التمريرات.
Argon2d
الوصول إلى الذاكرة يعتمد على كلمة المرور: الأقوى أمام وحدات GPU، لكنه معرَّض للقنوات الجانبية. مناسب لإثبات العمل (proof-of-work)، لا للخوادم التي تتحقق من تسجيل الدخول.

الإعدادات الموصى بها

  • Argon2id: توصي OWASP بذاكرة 19 MiB مع تكرارين وتوازٍ 1، أو موازنة مكافئة مثل 47 MiB مع تكرار واحد أو 12 MiB مع 3 تكرارات. وتقترح RFC 9106 ذاكرة 64 MiB و3 تكرارات و4 مسارات إذا سمحت الذاكرة.
  • bcrypt: تكلفة لا تقل عن 10؛ والقيمة 12 شائعة افتراضيًا اليوم. اختر أعلى تكلفة يتحملها مسار تسجيل الدخول لديك — نحو 250 مللي ثانية لكل هاش على الخادم هدف معقول.
  • الملح: 16 بايت عشوائيًا. طول الهاش: 32 بايت أكثر من كافٍ.
  • الوقت المقيس هنا هو على جهازك عبر WebAssembly، وهو عادة أبطأ من مكتبة أصلية على خادم. أجرِ قياس أداء على عتاد الإنتاج قبل تحديد التكلفة.

متى تستخدم هذه الأداة

استخدمها لإنشاء هاش لمستخدم تجريبي أولي أو لملف إعدادات، أو للتأكد من أن هاشًا في قاعدة بياناتك يطابق فعلًا كلمة المرور التي تظنها، أو لمعرفة المعاملات التي أُنشئ بها هاش موجود. يجب أن يقوم تطبيقك بهاش كلمات المرور بمكتبته الخاصة عند التسجيل، ولا ينبغي أبدًا أن يرسل كلمات مرور نصية إلى موقع ويب لهاشها. لإنشاء كلمة مرور قوية أولًا، استخدم مولد كلمات المرور؛ وللتوقيعات بمفتاح بدلًا من تخزين كلمات المرور، راجع مولد HMAC.

الأسئلة الشائعة

هل أستخدم bcrypt أم Argon2؟
Argon2id للأنظمة الجديدة: فقد فاز في Password Hashing Competition، وهو كثيف الذاكرة (memory-hard)، ما يجعل الكسر بوحدات GPU وASIC أغلى بكثير. ما زال bcrypt مقبولًا ومدعومًا على نطاق واسع جدًا، فأبقِ عليه إن كانت منظومتك تستخدمه بالفعل.
لماذا يختلف الهاش في كل مرة لكلمة المرور نفسها؟
يستخدم كل هاش ملحًا عشوائيًا جديدًا، فيتغير الناتج في كل مرة. هذا مقصود. للتحقق من كلمة مرور، تحقق منها مقابل الهاش المحفوظ بدلًا من مقارنة هاشين أُنشئا للتو.
هل يمكن فك تشفير هاش bcrypt أو Argon2؟
لا. إنها دوال أحادية الاتجاه. الطريقة الوحيدة لمعرفة كلمة المرور هي تخمين مرشحات وهاش كل واحدة منها، وهذه الخوارزميات تجعل ذلك بطيئًا عمدًا.
ما حد 72 بايت في bcrypt؟
يستخدم bcrypt أول 72 بايت فقط من كلمة المرور. ما يأتي بعدها لا يؤثر في الهاش، لذا فإن كلمتي مرور طويلتين تشتركان في أول 72 بايت تنتجان هاشين متطابقين. لا يوجد مثل هذا الحد في Argon2.
ما معامل التكلفة الذي ينبغي استخدامه مع bcrypt؟
10 على الأقل، و12 قيمة افتراضية شائعة. كل زيادة تضاعف العمل. اختر أعلى قيمة تُبقي تسجيل الدخول سريعًا بما يكفي على خادمك.
هل هاشات bcrypt بالبادئات $2a$ و$2b$ و$2y$ متوافقة؟
نعم، لكلمات المرور حتى 72 بايت تنتج الهاش نفسه. تقبل معظم المكتبات البادئات الثلاث، وهذه الأداة تتحقق منها جميعًا.
لماذا يستغرق التحقق وقتًا مثل إنشاء الهاش؟
التحقق يعني إعادة هاش كلمة المرور بالملح والمعاملات المخزنة في الهاش ومقارنة النتائج، لذا يكلّف العمل نفسه تمامًا. وهذا ما يجعل التخمين مكلفًا.
هل تُرسل كلمة المرور إلى خادم؟
لا. يعمل bcrypt وArgon2 عبر WebAssembly داخل متصفحك. لا شيء مما تكتبه يغادر الصفحة.