ماذا سيكون "openssl enc -a -e -salt -des3 -pass pass: ABC123" ما يعادلها في .NET؟

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

  •  28-09-2019
  •  | 
  •  

سؤال

يحتاج تطبيق .NET الخاص بي إلى التواصل مع نظام Linux الذي يستخدم سطر الأوامر التالي لتشفير رسائله:

openssl enc -a -e -salt -des3 -pass pass:abc123

كيف سيكون رمز مكافئ لتشفير/فك تشفير الرسائل في C# تبدو؟

أفهم أنه يجب علي استخدام ثلاث مرات في وضع CBC مع PKCS7 الحشو. ما لا أعرفه هو ماذا مقاس الكتله و متجه التهيئة (IV) هل ينبغي أن أستخدم.

كما أنني أشعر بالارتباك كيف يجب أن أشتق المفتاح من كلمة المرور. هل ينبغي أن أستخدم PBKDF1 أو PBKDF2 وما الملح الذي يجب أن أستخدمه؟

إذن ما يبدو أنه وظيفة قياسية تمامًا بالنسبة لي مع كل اللغز الليلي. أي شخص يمكن أن تساعدني؟

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

المحلول

إذن ها هي الحيلة:

> openssl enc -a -e -salt -des3 -P -pass pass:abc123
salt=17685C0658F85BA4
key=1CB6E5A0AA4953EC2323CBA021EF008C9193F5F29990DE87
iv =9148EB5B2BF2E9B2

إذا أطعمت ثلاث مرات الخوارزمية الناتج هو نفسه تقريبا OpenSSL خرج. الفرق فقط هو 16 بايت إضافي في بداية إخراج OpenSSL. أول ثمانية من هذه البايتات هو نص "slated__" والثانية الثانية هو الملح.

الملح عشوائي. فكيف يمكنني استنباط المفتاح والرابع من كلمة المرور والملح؟ PBKDF1 ولا PBKDF2 لا يتأهل.

إذن ها هي الحيلة الثانية:

A = MD5(pwd + SALT)
B = MD5(A + PWD + SALT)
KEY + IV = A + B

بالإضافة إلى علامة الإشارة إلى التسلسل ، يبلغ طول المفتاح 24 بايت ، ويبلغ طوله 8 بايت.

لقد تعلمت هذه الخدعة من مدونة Deusty حيث يفعل أشياء مماثلة مع AES.

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