ما الذي يجب استخدامه لتجزئة كلمة المرور؟هل هناك أي سبب لعدم استخدام jBCrypt؟

StackOverflow https://stackoverflow.com/questions/622732

سؤال

أخطط للاستخدام jBCrypt لتجزئة كلمة المرور في تطبيق ويب جديد، حيث من المفترض أن يكون الأفضل مما قرأت.لأنني لم أستخدمه قبل أن أتحقق مما إذا كان هناك أي سبب لعدم استخدامه.

لدي هذا:

  • لم أجده في مستودع Maven (بحثت عن jbcrypt وbcrypt على mvnrepository.org) وهو أمر محبط لأنني أرغب في إدارة تبعياتي باستخدام مستودع Maven إن أمكن.إذا كان jBCrypt هو الحل الأفضل لتجزئة كلمة المرور، فسأضطر إلى إعداد المستودع المحلي الخاص بي وإتاحته بهذه الطريقة.أم أنني فاتني ذلك للتو؟ربما هو هناك في مكان ما؟
  • إنه موجود فقط في الإصدار 0.2، ولكن ربما يكون مستقرًا على أي حال والسبب في انخفاض رقم الإصدار له سبب آخر؟
هل كانت مفيدة؟

المحلول

من المحتمل أن يكون jBcrypt جيدًا كخوارزمية تشفير لكلمات المرور الخاصة بك؛السمكة المنتفخة قوية نسبيًا.على الرغم من وجود بعض عيوب التنفيذ المُبلغ عنها في Blowfish نفسها، إلا أنني لم أجد أي شيء تم الإبلاغ عنه كثيرًا حول jBcrypt.من ناحية أخرى، لم يتم اختبار السمكة المنتفخة بنفس القدر الذي تم به اختبار الخوارزميات الأخرى، و كسرغالبًا ما يعمل هجوم Plaintxt المعروف بأسلوب أفضل من المتوقع، مما يثير دهشة خبراء العملات المشفرة.

إذن إليك ما أقترحه:

  • تابع واستخدم jBcrypt ولكن قم بحماية ملفات كلمة المرور المشفرة الخاصة بك إلى الحد الذي يمكنك فعله بشكل معقول - كما تفعل باستخدام /etc/shadow على نظام UNIX.
  • خلافًا لاقتراح نيخيل، أنا كان اسحب المصادر إلى التحكم في الإصدار لديك لسببين:(1) في أي مكان آخر يمكنك الاحتفاظ بها، نظرًا لأنك تحتاج إليها كلما قمت بالبناء، و(2) لأنه يوجد دائمًا فرصة سينتقل الشخص الذي يقوم بـ jBcrypt إلى أشياء أخرى، ولا تريد أن تجد نفسك متدليًا قبل التسليم مباشرة (وهو أمر لا مفر منه عندما تكتشف ذلك). في هذا النوع من المواقف، سأضع المصادر في التحكم في الإصدار الخاص بك كما لو كانت رمز التشغيل الخاص بك، وبعد ذلك يمكن إدراج أي تغييرات كما لو كنت قد أنشأت إصدارًا جديدًا بنفسك.لا داعي لأن تكون أكثر تعقيدًا مما كنت عليه عادةً.

نصائح أخرى

بقدر ما تشعر بالقلق من أنها ليست ناضجة، كنت سأقترح عليك إعداد اختبارات JUnit الخاصة بك لمقارنة نتائج jBcrypt وBcrypt الأكثر إثباتًا، لمعرفة ما إذا كنت ستحصل على نفس النتائج، ثم المساهمة بها في jBcrypt مشروع.

ولكن تم ذلك بالفعل:

...

إن الاطلاع على اختبارات JUnit لمعرفة ما إذا كانت تلبي مستوى رضاك ​​هو المكان الذي سأبدأ فيه...

أشك في أن الاستقرار سيكون مشكلة، نظرًا لأن bcrypt نفسه ناضج وأغلفته الصغيرة الموحدة لا تفعل أي شيء غير عادي.أنا سعيد ببرنامج تشفير bcrypt الآخر الخاص بـ Damien Miller، بيثون-bcrypt, ، وهو موجود فقط في الإصدار 0.1.

لست على دراية بـ Maven، ولكن (تنبيه بدعة!) أشك في أنك بحاجة إلى التحكم في الإصدار لمكون بسيط مثل bcrypt.على حد تعبير الموقع، كانت التغييرات من الإصدار 0.1 إلى الإصدار 0.2 هي "تعديلات التصحيح والأخطاء المطبعية وواجهة برمجة التطبيقات (متوافقة تمامًا مع الإصدارات السابقة)" وقائمة المهام فارغة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top