جافا/جي سي إي:فك تشفير الرسائل "الطويلة" المشفرة باستخدام RSA

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

  •  08-07-2019
  •  | 
  •  

سؤال

لقد تلقيت رسالة تحتوي على بايت[]، مشفرة باستخدام "RSA/ECB/PKCS1Padding".لفك تشفيره، أقوم بإنشاء Cipher c وأبدأ به

c = Cipher.getInstance("RSA/ECB/PKCS1Padding");

حتى الآن قمت بفك تشفير الرسائل الصغيرة فقط باستخدام ملف دوفينال () الطريقة، إرجاع بايت[] مع البايتات التي تم فك تشفيرها.

c.init(Cipher.DECRYPT_MODE, privateKey);
byte[] decryptetBytes = c.doFinal(encryptedBytes);

ولكن في هذه الحالة تكون البيانات أكبر (حوالي 500 بايت)، و دوفينال ()- الطريقة تطرح استثناءً (javax.crypto.IllegalBlockSizeException:يجب ألا يزيد طول البيانات عن 128 بايت).أعتقد أنني بحاجة لاستخدام تحديث()- الطريقة، ولكن لا أستطيع معرفة كيفية جعلها تعمل بشكل صحيح.كيف يتم ذلك؟

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

المحلول

وأعتقد باستخدام التشفير RSA لشيء ولكن النقل الرئيسي هو سوء المعاملة.

وتوليد مفتاح جديد لتشفير متماثل وتشفير البيانات كبيرة الحجم مع ذلك. ثم تشفير المفتاح مع RSA. إرسال الشفرات النص المشفر بشكل متناظر، جنبا إلى جنب مع مفتاح التشفير المحتوى مشفرة غير متماثلة إلى المتلقي.

نصائح أخرى

ومع RSA يمكنك تشفير فقط / فك تشفير كتلة مع حجم ما يصل الى رئيسيا بك طول ناقص طول الحشو. إذا كان لديك البيانات أطول من المفتاح الخاص بك ربما يتم دمج فقط في مجموعة واحدة لذلك يجب تقسيمه إلى قطع مع حجم المفتاح الخاص (128 بايت توحي 1024 مفتاح مع عدم وجود الحشو، وأنا لست متأكدا ما اذا كان من الممكن). عن طريق التحديث () ليس هو الحال هنا.

وببساطة، عليك أن تعرف كيف تم إنشاء هذه المجموعة.

وبصفة عامة، لا ينبغي أن تستخدم لتشفير RSA كمية كبيرة من البيانات كما انها قتا طويلا جدا. وينبغي أن تستخدم لتشفير مفتاح تشفير متماثل، مثل AES.

ونلقي نظرة هنا: https://www.owasp.org/index.php/Digital_Signature_Implementation_in_Java

وكما قال إريكسون

الخطوات التي يجب عليك اتخاذها للتشفير هي:

  1. إنشاء زوج مفاتيح RSA (أو استرداد المفتاح العام من مخزن المفاتيح)
  2. إنشاء مفتاح متماثل (AES)
  3. تشفير البيانات باستخدام مفتاح AES
  4. تشفير مفتاح AES باستخدام مفتاح RSA العام
  5. قم بتخزين (أو إرسالها إلى شخص لديه مفتاح خاص) مفتاح AES المشفر وبيانات AES المشفرة

لفك التشفير:

  1. احصل على المفتاح الخاص المرتبط بزوج المفاتيح هذا المستخدم للتشفير
  2. فك تشفير مفتاح AES باستخدام المفتاح الخاص
  3. فك تشفير البيانات باستخدام مفتاح AES
  4. استخدم البيانات
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top