0 سؤال: RijndaelManaged فك تشفير مع مفتاح 8 بايت

السؤال الذي تم إنشاؤه في Wed, May 8, 2019 12:00 AM

لدي الكود التالي الذي يعمل بشكل مثالي على تشفير وفك تشفير في إطار عمل net حتى مع وجود مفتاح غير صالح لـ RijndaelManaged ، لكن الآن في netCore لا يعمل لأنه يحتاج إلى مفتاح 16 بايت ، أريد إعادة إنشاء المفتاح الذي يتم إنشاء المكتبة في أطر عمل net مع توسيع المفتاح لفك تشفيره في تطبيق net core ، لكنني لا أفعل الآن كيف

لقد وجدت مشكلة مشابهة ولكن في PHP هنا توسيع مفتاح RijndaelManaged.CreateEncryptor يقول "فقط اقطع البايتان الأخيرتان" لكن ماذا؟ وكيف أكمل بقية البايتات؟

//Code tha works in the framework app
///8 bytes
_key = System.Text.ASCIIEncoding.UTF8.GetBytes("abcdefgh");

//16 bytes
_iv = System.Text.ASCIIEncoding.UTF8.GetBytes("abcdefghijklmnop");
_provider = new RijndaelManaged();
_provider.Mode = CipherMode.CBC;
_provider.KeySize = 128;
_provider.CreateEncryptor(_key, _iv)
    
0
  1. أم ، نعم ، تحتاج خوارزمية تشفير 128 بت إلى مفتاح 128 بت. إذا كنت تصر على استخدام سلسلة كمفتاح ، فقم بتشغيله من خلال خوارزمية التجزئة أولاً ، وأخذ 16 بايت من إخراج ذلك. لا يزال لديك WAY أقل من 128 بت من الإنتروبي لتشفيرك.
    2019-05-08 16: 28: 17Z
    لى>
  2. بالنسبة لإنشاء مكتبة متوافقة مع الكود الحالي ، هل حاولت صفر ملء الـ 8 بايت المتبقية؟
    2019-05-08 16: 29: 09Z
    لى>
  3. نعم ، يحتاج إلى مفتاح 128 بت ولكنه يعمل لسبب ما مع مفتاح 64 بت في مكتبة الشبكة الإطارية بسبب "الميزة" التي توسع المفتاح ، نعم حاولت املأ بصفر البايتات الثمانية الأخيرة وفي البداية أيضًا ، لكنه لا يعمل
    2019-05-08 18: 49: 10Z
    لى>
  4. تتمثل الخيارات الأخرى للمحاولة في تكرار السلسلة مرتين ، أو أخذ البايتات الثمانية الأخيرة من الرابع. إذا لم يعملوا ، فسيتعين عليك لدغة الرمز النقطي وتغيير الشفرة /الخوارزمية القديمة لتعمل بشكل صحيح (ولكن تفقد التوافق مع كلمات المرور الحالية).
    2019-05-09 08: 31: 25Z
    لى>
  5. القليل من البحث لاحقًا ، وقد يكون هذا مفيدًا لك: docs.microsoft.com/en-us/dotnet/api/…
    2019-05-09 08: 38: 40Z
    لى>
0 إجابة                              0                         
وضع مصدر هنا