توصيات بشأن مكتبة مجانية لاستخدامها في ضغط الملفات [مغلق]

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

  •  03-07-2019
  •  | 
  •  

سؤال

أحتاج إلى ضغط الملف وحمايته بكلمة مرور.هل هناك مكتبة جيدة (مجانية) لهذا؟

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

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

المحلول

وبعد الكثير من البحث، لقد وجدت ثلاثة مناهج:

وهناك مجموعة متاحة بحرية شفرة المصدر، ومناسبة لالبريدي ملف واحد. ومع ذلك، لا يوجد ترخيص. استخدام غير AesZipOutputStream.zipAndEcrypt (...). http://merkert.de/de/info/zipaes/src.zip ( https://forums.oracle.com/forums/thread.jspa؟threadID= 1526137 )

وUPDATE: هذا الرمز هو الآن أباتشي مرخص وأفرج عنه في http://code.google.com/ ع / winzipaes / . لأنها عملت لي (ملف واحد في الرمز البريدي)، ويسد ثغرة في جافا يفتح المكتبات مصدر جيد.

ومنتج تجاري (500 $ في وقت كتابة هذا التقرير). لا أستطيع التحقق من ما إذا كان هذا يعمل، مع اقتراب موعد رخصة محاكمتهم معقد. لها أيضا التطبيق. NET استدار: http://www.nsoftware.com/ipworks/zip/default.aspx

ومنتج تجاري (290 $ في وقت كتابة هذا التقرير). مناسبة فقط لWnidows كما أنه يستخدم دلل: http://www.example-code.com/java/zip.asp

نصائح أخرى

يمكنك المحاولة Zip4j, مكتبة جافا خالصة للتعامل مع الملفات المضغوطة.وهو يدعم التشفير/فك التشفير لطرق التشفير PKWare وAES.

دلائل الميزات:

  • إنشاء، إضافة، استخراج، تحديث، إزالة الملفات من ملف مضغوط
  • قراءة/كتابة الملفات المضغوطة المحمية بكلمة مرور
  • يدعم تشفير AES 128/256
  • يدعم تشفير الرمز البريدي القياسي
  • يدعم تنسيق Zip64
  • يدعم المتجر (بدون ضغط) وطريقة الضغط المفرغة
  • إنشاء أو استخراج الملفات من ملفات Split Zip (على سبيل المثال:z01، z02،...الرمز البريدي)
  • يدعم أسماء ملفات Unicode
  • مراقب التقدم

رخصة:

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

وشيء واحد مهم جدا حول تشفير الرمز البريدي:

وهناك عدة أنواع من التشفير البريدي. النوع القديم (جزء من معيار الرمز الأصلي) ليست على الإطلاق يستحق عناء مع (ويمكن أن تصدع في أقل من 10 دقائق مع التطبيقات المتاحة بسهولة على الانترنت).

إذا كنت تفعل أي نوع من تشفير الملفات والرمز البريدي، رجاء، رجاء التأكد من استخدام واحدة من معايير التشفير القوية (وأعتقد أن 128- و 256 بت AES معيار برنامج لضغط الملفات هو الأفضل مدعومة). وهنا المواصفات التقنية و- استخدمنا هذا عند وضع منطقتنا جافا النظام البريدي مشفرة (لا يمكن توفير مصدر - آسف - انها استخدام الداخلي فقط)

والشيء الوحيد الأسوأ من عدم وجود تشفير يفكر أن لديك التشفير ويجري خاطئ: -)

و7 زيب لديه خيار لإضافة كلمة مرور في وضع سطر الأوامر الخاصة به. ربما يمكنك إكسيك ذلك للحصول على هذه النتيجة (ولها حصة ضغط جيدة جدا).

والسلبيات: عملية خارجية، من الصعب جعل المحمولة (حتى لو 7 زيب هو في حد ذاته المحمولة)، ولست متأكدا من رخصة التوزيع

.

لاحظ أن ملفات Zip InfoZip، والمحمولة للغاية أيضا، كما يدعم كلمة السر.

ويمكنك أيضا محاولة TrueZip. الاطلاع على الروابط التالية للحصول على الميزات: https://christian-schlichtherle.bitbucket.io/truezip/

والخلف من TrueZip يمكن العثور عليها هنا: https://christian-schlichtherle.bitbucket.io/truevfs/

وهنا مثال باستخدام winzipaes 1.0.1. لاحظ أن هذا هو مجرد جوهر، أنا لم تختبر هذه التعليمة البرمجية في هذا النموذج بالضبط.

import de.idyl.winzipaes.AesZipFileEncrypter;
import de.idyl.winzipaes.impl.AESEncrypterBC;

File aNewZipFile = new File("/tmp/foo.zip");
File existingUnzippedFile = new File("/tmp/src.txt");

// We use the bouncy castle encrypter, as opposed to the JCA encrypter
AESEncrypterBC encrypter = new AESEncrypterBC();
encrypter.init("my-password", 0);  // The 0 is keySize, it is ignored for AESEncrypterBC

AesZipFileEncrypter zipEncrypter = new AesZipFileEncrypter(aNewZipFile, encrypter);
zipEncrypter.add(existingUnzippedFile, "src.txt", "my-password"); 

// remember to close the zipEncrypter
zipEncrypter.close();

ويمكنك لهم بفك "/tmp/foo.zip" باستخدام برنامج لضغط الملفات (V9 +) أو 7za (أي 7ZIP) على ماك، وذلك باستخدام كلمة "بلدي كلمة المرور".

ملحوظة: ليس واضحا لي لماذا كان من الضروري تحديد كلمة المرور مرتين في التعليمات البرمجية أعلاه. أنا لا أعرف ما الذي سيحدث إذا كنت تستخدم كلمات مرور مختلفة في هذه المكانين.

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

  1. هل تحتاج إلى فتح الملف المضغوط بواسطة أدوات Zip القياسية التي يمكنها التعامل مع كلمة مرور مضغوطة؟
  2. نفس السؤال السابق هل ستقوم بتمرير هذا الرمز البريدي إلى كيان خارجي عليه فتح الملف المضغوط؟
  3. هل هو داخلي فقط وتريد فقط حماية محتويات الملف المضغوط؟

لمدة 3، يمكنك فقط استخدام جافا لتشفير محتويات الدفق المضغوط كملف عادي، وربما يكون من الأفضل تغيير امتداد الملف إلى .ezip أو شيء من هذا القبيل أيضًا.

بالنسبة للرقم 1 و2، يمكنك استخدام com.chilkat الحل كما ذكر أو ما يعادله.ومع ذلك، يجب أن تدرك أن chillkat ليس حل Java خالصًا، فهو يستخدم JNI.

معلومات إضافية: أنا googled أكثر قليلا، والواقع، بل هو سؤال شائع جدا، ويبدو أنه لا يوجد حل الحرة

(بعد؟).

والآن، الخوارزمية القياسية التشفير البريدي يعرف جيدا: انظر PKWARE في <لأ href = "http://www.pkware.com/support/zip-application-note" يختلط = "نوفولو noreferrer" عنوان = "تطبيق ملاحظة "> ملاحظة تطبيق على شكل ملف مضغوط. ويبدو أن التشفير المنجز على تيار المشفرة. إذا كان شخص ما يشعر مثل الترميز ذلك ...

والآن، وأتساءل لماذا الشمس لم تدرجه في مكتبته؟ عدم وجود المعيار؟ براءات الاختراع / مشكلة قانونية؟ أضعف من أن تكون صالحة للاستعمال؟

<اقتباس فقرة>   

هل هناك جيدة (مجانا) مكتبة لذلك؟

سوف

وjava.util.zip تفعل فتح سوستة، لكنها لن تفعل كلمات السر. ولا، أنا لا أعرف أي تلك الخطوط التي سوف. أرخص رأيته هو 150 $ للحصول على مقعد المطور.

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