سؤال

أنا أعمل مع Subversion المستند إلى Windows وأرغب في كتابة أداة مساعدة سهلة في .NET للعمل مع ملف كلمة مرور Apache.أدرك أنه يستخدم وظيفة يشار إليها باسم MD5Crypt، لكن يبدو أنني لا أستطيع العثور على وصف للخوارزمية يتجاوز ذلك في مرحلة ما يستخدم MD5 لإنشاء تجزئة.

هل يمكن لأي شخص وصف خوارزمية MD5Crypt وتنسيق سطر كلمة المرور؟

هل كانت مفيدة؟

المحلول

يوجد وصف نصي دقيق لخوارزمية التشفير المحدثة للاستخدام مع sha256 وsha512 http://www.akkadia.org/drepper/SHA-crypt.txt

فهو يشتمل على تناقضات مع خوارزمية MD5، لذا يجب أن يوفر لك ما تبحث عنه.

نصائح أخرى

يمكنك العثور على تطبيق md5crypt في ملف حزمة tclib. التحميل متاح من sourceforge.

يمكنك أيضًا العثور على مثال لـ md5crypt المتوافق مع Apache في ملف كود المصدر للمعالج العام لـ CAS

يعد MD5Crypt في الأساس بديلاً لوظيفة تشفير Unix القديمة.تم تقديمه في freebsd، وتم اعتماده من قبل مجموعات أخرى أيضًا.

الفكرة الأساسية هي هذه:

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

ولكن هناك مشكلة:

  • لنفترض أنك اخترت كلمة المرور "جيف" واخترت أيضًا كلمة المرور "جيف".
  • الآن كل من تجزئات كلمة المرور الخاصة بنا هي نفسها.
  • لذا، إذا رأيت رموز التجزئة المخزنة، سأعرف أن كلمة المرور الخاصة بك هي نفس كلمة المرور الخاصة بي، "جيف".

لذا، يمكننا إضافة سلسلة "ملح" إلى كلمة المرور.

  • هذا يمكن أن يكون أي شيء عشوائي.
  • لنفترض أن حسابك هو "zuzu" وبالنسبة لحسابي هو "rjrj".
  • الآن نقوم بتجزئة السلسلة "jeffzuzu" لكلمة المرور الخاصة بك، و"jeffrjrj" لكلمة المرور الخاصة بي.
  • الآن لدينا قيم تجزئة مختلفة لكلمة المرور الخاصة بنا.
  • يمكننا تخزين قيمة الملح بأمان باستخدام كلمة المرور المجزأة، حيث أن معرفة قيمة الملح لن تساعد في فك تشفير التجزئة.

لقد ذكرت .net، هناك مؤشر في منتدى آخر يشير إلى هذا:

System.Security.Cryptography.MD5CryptoServiceProvider md5 = new
System.Security.Cryptography.MD5CryptoServiceProvider();

string hash =BitConverter.ToString((md5.ComputeHash(
System.Text.ASCIIEncoding.Default.GetBytes(stringtohash) ) ));

هث!

العملية معقدة إلى حد ما ...يتم تجزئة الملح وكلمة المرور معًا ليس مرة واحدة، بل 1000 مرة.أيضًا، يستخدم ترميز base64 أبجدية مختلفة، وتتم إزالة الحشو من النهاية.

ربما يكون أفضل شيء هو العثور على مكتبة لاستخدامها، مثل glibc ضمن cygwin.

نظرًا لأنك قمت بالبرمجة ضد Apache على أي حال، فقم بإلقاء نظرة على تنفيذ أباتشي من crypt-md5.

يمكن العثور على الخوارزمية الأصلية (على ما أظن) في لغة C هنا.وهو يختلف عن التنفيذ أعلاه فقط باختلاف الرقم السحري.

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