java - फ़ाइलों को ज़िपित करने के लिए उपयोग करने के लिए एक मुफ्त लाइब्रेरी पर सिफारिशें




encryption zip (9)

मुझे फ़ाइल को ज़िप और पासवर्ड-सुरक्षित करने की आवश्यकता है। क्या इसके लिए कोई अच्छी (मुफ्त) लाइब्रेरी है?

इसे किसी तृतीय पक्ष द्वारा खोला जाना आवश्यक है, इसलिए पासवर्ड सुरक्षा को मानक टूल के साथ काम करने की आवश्यकता है।


Answers

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();

पासवर्ड "मेरा पासवर्ड" पासवर्ड का उपयोग करके, आप मैक पर Winzip (v9 +) या 7za (यानी 7zip) का उपयोग करके "/tmp/foo.zip" को अनजिप कर सकते हैं।

नोट: यह मुझे स्पष्ट नहीं है कि ऊपर दिए गए कोड में दो बार पासवर्ड निर्दिष्ट करना आवश्यक क्यों है। मुझे नहीं पता कि क्या होगा यदि आपने इन दो स्थानों में अलग-अलग पासवर्ड इस्तेमाल किए।


आप ज़िप फ़ाइल को संभालने के लिए एक शुद्ध जावा लाइब्रेरी Zip4j आज़मा सकते हैं। यह पीकेवेयर और एईएस एन्क्रिप्शन विधियों के एन्क्रिप्शन / डिक्रिप्शन का समर्थन करता है।

प्रमुख विशेषताऐं:

  • एक ज़िप फ़ाइल से फ़ाइलें निकालें, जोड़ें, निकालें, अपडेट करें, निकालें
  • पासवर्ड सुरक्षित ज़िप फ़ाइलों को पढ़ें / लिखें
  • एईएस 128/256 एन्क्रिप्शन का समर्थन करता है
  • मानक ज़िप एन्क्रिप्शन का समर्थन करता है
  • Zip64 प्रारूप का समर्थन करता है
  • स्टोर (कोई संपीड़न) और Deflate संपीड़न विधि का समर्थन करता है
  • स्प्लिट ज़िप फ़ाइलों से फ़ाइलें बनाएं या निकालें (उदा: z01, z02, ... ज़िप)
  • यूनिकोड फ़ाइल नाम का समर्थन करता है
  • प्रगति मॉनिटर

लाइसेंस:


7-ज़िप में अपने कमांड लाइन मोड में पासवर्ड जोड़ने का विकल्प है। शायद आप इसे परिणाम प्राप्त करने के लिए इसे निष्पादित कर सकते हैं (और इसमें भी एक अच्छा संपीड़न राशन है)।

दोष: बाह्य प्रक्रिया, पोर्टेबल बनाने में कठोर (भले ही 7-ज़िप पोर्टेबल है), वितरण लाइसेंस के बारे में सुनिश्चित नहीं है।

ध्यान दें कि InfoZip की ज़िप उपयोगिता, अत्यधिक पोर्टेबल भी पासवर्ड का समर्थन करती है।


बहुत खोज के बाद, मुझे तीन दृष्टिकोण मिल गए हैं:

स्रोत कोड का एक स्वतंत्र रूप से उपलब्ध सेट, एक फ़ाइल ज़िप के लिए उपयुक्त है। हालांकि, कोई लाइसेंस नहीं है। उपयोग AesZipOutputStream.zipAndEcrypt (...) है। http://merkert.de/de/info/zipaes/src.zip ( https://forums.oracle.com/forums/thread.jspa?threadID=1526137 )

अद्यतन: यह कोड अब अपाचे लाइसेंस प्राप्त है और http://code.google.com/p/winzipaes/ पर जारी किया गया है। यह मेरे लिए काम करता है (ज़िप में एक फाइल), और जावा के ओपन सोर्स लाइब्रेरी में अच्छी तरह से एक छेद भरता है।

एक वाणिज्यिक उत्पाद (लेखन के समय $ 500)। मैं यह सत्यापित नहीं कर सकता कि यह काम करता है, क्योंकि उनके परीक्षण लाइसेंस दृष्टिकोण जटिल हैं। यह एक पोर्टेड .NET ऐप भी है: http://www.nsoftware.com/ipworks/zip/default.aspx

एक वाणिज्यिक उत्पाद (लेखन के समय $ 2 9 0)। केवल Wnidows के लिए उपयुक्त है क्योंकि यह एक डीएलएल का उपयोग करता है: http://www.example-code.com/java/zip.asp


यह कोई जवाब नहीं है, लेकिन संभावित समाधानों का मूल्यांकन करते समय ध्यान में रखना सावधानी बरतता है।

ज़िप एन्क्रिप्शन के बारे में एक बहुत ही महत्वपूर्ण बात:

ज़िप एन्क्रिप्शन के कई प्रकार हैं। पुराना प्रकार (मूल ज़िप मानक का हिस्सा) के साथ परेशान करने योग्य नहीं है (इसे आसानी से ऑनलाइन उपलब्ध ऐप्स के साथ 10 मिनट से भी कम समय में क्रैक किया जा सकता है)।

यदि आप ज़िप फ़ाइलों के किसी प्रकार का एन्क्रिप्शन कर रहे हैं, तो कृपया सुनिश्चित करें कि आप एक मजबूत एन्क्रिप्शन मानकों का उपयोग करते हैं (मुझे विश्वास है कि विनज़िप का 128- और 256-बिट एईएस मानक सबसे अच्छा समर्थित है)। तकनीकी चश्मा यहां दिए गए हैं - हमने इसका उपयोग अपने स्वयं के जावा एन्क्रिप्टेड ज़िप सिस्टम को विकसित करते समय किया था (स्रोत प्रदान नहीं कर सकता - क्षमा करें - यह केवल आंतरिक उपयोग है)

कोई एन्क्रिप्शन होने से भी बदतर बात यह सोच रही है कि आपके पास एन्क्रिप्शन है और गलत है :-)



क्या इसके लिए कोई अच्छी (मुफ्त) लाइब्रेरी है?

java.util.zip ज़िपिंग करेगा, लेकिन यह पासवर्ड नहीं करेगा। और नहीं, मुझे किसी भी मुक्त व्यक्ति की जानकारी नहीं है। एक डेवलपर सीट के लिए मैंने देखा chillkat $ 150 है।


अतिरिक्त जानकारी: मैं थोड़ी अधिक गुस्से में और वास्तव में, यह एक आम सवाल है, और ऐसा प्रतीत होता है कि कोई मुफ्त समाधान नहीं है (अभी तक?)।

अब, ज़िप एन्क्रिप्शन का मानक एल्गोरिदम अच्छी तरह परिभाषित है: .ZIP फ़ाइल प्रारूप पर PKWARE का एप्लिकेशन नोट देखें। यह एन्क्रिप्टेड स्ट्रीम पर किया गया एक एन्क्रिप्शन प्रतीत होता है। अगर किसी को कोडिंग की तरह लगता है ...

अब, मुझे आश्चर्य है कि क्यों सूर्य ने इसे अपनी पुस्तकालय में शामिल नहीं किया? मानक की कमी? पेटेंट / कानूनी मुद्दा? प्रयोग करने योग्य होने के लिए बहुत कमजोर?


ZIP एक फ़ाइल प्रारूप है जो लापरवाही संपीड़न के साथ एक मनमानी संख्या में फ़ाइलों और फ़ोल्डर्स को संग्रहीत करने के लिए उपयोग किया जाता है। यह संपीड़न विधियों के उपयोग के बारे में कोई सख्त धारणा नहीं करता है, लेकिन इसका उपयोग अक्सर DEFLATE साथ किया जाता है।

Gzip पर आधारित एक संपीड़न एल्गोरिदम दोनों है, लेकिन संभावित पेटेंट एट अल के साथ कम से कम, और एक संकुचित फ़ाइल को संग्रहीत करने के लिए एक फ़ाइल प्रारूप है। यह tar के साथ संयुक्त होने पर फ़ाइलों और फ़ोल्डरों की मनमानी संख्या को संपीड़ित करने का समर्थन करता है। परिणामी फ़ाइल में .tgz या .tar.gz का विस्तार होता है और इसे आमतौर पर टैरबॉल कहा जाता है।

zlib अपने सबसे आम LZ77 अवतार में DEFLATE को encapsulating कार्यों की एक पुस्तकालय है।





java encryption zip