2015-10-19 13 views
6

Czy istnieje biblioteka, która może skompresować plik za pomocą hasła przy użyciu szyfrowania AES?Jak zip plik z hasłem (AES) dla iOS i Androida?

Znalazłem to na iOS: https://github.com/gianlucabertani/Objective-Zip

+0

Użyłem ZipArchive do utworzenia plików zip z hasłem i rozpakowania ich. Jedyną wadą jest to, że nie można go rozpakować przez żaden inny program mac. odnośnik: https://github.com/ZipArchive/ZipArchive – Sneha

+0

Hej dzięki za odpowiedź. Czy jest w stanie chronić plik zip hasłem? – user1872384

+0

tak. Żaden inny program nie może rozpakować go poza ZipArchive :). Trudne czasami do debugowania, ponieważ trzeba zrobić program na Mac OSX, aby go rozpakować :). – Sneha

Odpowiedz

1

przypadku Androida jest ładny blogu do rozpakowywania plików tutaj: http://blog.alutam.com/2009/10/31/reading-password-protected-zip-files-in-java/ ten jest realizowany przy użyciu standardów 7-Zip (faktycznie starsza forma PKWARE zip i nie AES) więc możesz rozpakować pliki utworzone z innych platform, a także: Jednak wolę używać tego: zip4j, ponieważ ma już biblioteki Java i można je po prostu zintegrować z projektem Android, a ponieważ integrują go, biblioteki JAVA są dość łatwe , dostajesz szybką naprawę. Ponadto, ponieważ obsługuje to AES, jest on bardziej odpowiedni dla twojego pytania: Edytuj: Mój przyjaciel używa Minizip for iOS do zaimplementowania skompresowania/rozpakowania dla swojego projektu iOS. Możesz spróbować, aby: Zip4j i Minizip nie współpracowały ze sobą, gdy użyliśmy haseł (zip archiwum w Andropidzie i rozpakuj w iOS i na odwrót) (próbowaliśmy po przeczytaniu twojego post, więc spędziliśmy mało czasu do teraz). Czy pisać tutaj jeśli spróbujesz je i uczynić postępy w tym kierunku

+0

Thx za odpowiedź. Czy masz jakieś zalecenia dotyczące iOS? – user1872384

+0

@ user1872384 Zmieniono moją odpowiedź, sprawdź –

+0

@ user1872384 To, co napisałeś w swoim pytaniu: Object-ve-zip dla iOS, również jest dobre. W rzeczywistości jest to opakowanie Minizip dla iOS –

5

UPDATE:

aktualizowane ustawienie parametrów i hasło w zipfile metody tworzenia.

można wykorzystywać bibliotekę Zip4j http://www.lingala.net/zip4j/download.php

jeśli chcesz AES też można zrobić z następującym kodem

// Initiate ZipFile object with the path/name of the zip file. 
      ZipFile zipFile = new ZipFile("c:\\ZipTest\\AddFilesWithAESZipEncryption.zip"); 

// Build the list of files to be added in the array list 
      // Objects of type File have to be added to the ArrayList 
      ArrayList filesToAdd = new ArrayList(); 
      filesToAdd.add(new File("c:\\ZipTest\\sample.txt")); 
      filesToAdd.add(new File("c:\\ZipTest\\myvideo.avi")); 
      filesToAdd.add(new File("c:\\ZipTest\\mysong.mp3")); 

      // Initiate Zip Parameters which define various properties 
      ZipParameters parameters = new ZipParameters(); 
      parameters.setCompressionMethod(Zip4jConstants.COMP_DEFLATE); // set compression method to deflate compression 

//DEFLATE_LEVEL_FASTEST  - Lowest compression level but higher speed of compression 
      //DEFLATE_LEVEL_FAST  - Low compression level but higher speed of compression 
      //DEFLATE_LEVEL_NORMAL - Optimal balance between compression level/speed 
      //DEFLATE_LEVEL_MAXIMUM  - High compression level with a compromise of speed 
      //DEFLATE_LEVEL_ULTRA  - Highest compression level but low speed 
      parameters.setCompressionLevel(Zip4jConstants.DEFLATE_LEVEL_NORMAL); 

      //Set the encryption flag to true 
      parameters.setEncryptFiles(true); 

      //Set the encryption method to AES Zip Encryption 
      parameters.setEncryptionMethod(Zip4jConstants.ENC_METHOD_AES); 

      //AES_STRENGTH_128 - For both encryption and decryption 
      //AES_STRENGTH_192 - For decryption only 
      //AES_STRENGTH_256 - For both encryption and decryption 
      //Key strength 192 cannot be used for encryption. But if a zip file already has a 
      //file encrypted with key strength of 192, then Zip4j can decrypt this file 
      parameters.setAesKeyStrength(Zip4jConstants.AES_STRENGTH_256); 

      //set password 
      parameters.setPassword("your password here"); 

// Now add files to the zip file 
      // Note: To add a single file, the method addFile can be used 
      // Note: If the zip file already exists and if this zip file is a split file 
      // then this method throws an exception as Zip Format Specification does not 
      // allow updating split zip files 
      zipFile.addFiles(filesToAdd, parameters); 

setEncryptionMethod() określa rodzaje szyfrowania chcesz. i setAesKeyStrength() określają siłę algorytmu szyfrowania.

+0

jak zabezpieczony hasłem istniejący plik zip przy użyciu biblioteki Zip4j w systemie Android? –

+0

Możesz ustawić hasło bezpośrednio na obiekcie ZipFile za pomocą metody "setPassword()" –

+0

'try { ZipFile zipFile = new ZipFile (output_path); zipFile.setPassword ("pass"); } catch (ZipException e) { e.printStackTrace(); } "to nie działa –

1

Można użyć OpenSSL dla android https://github.com/eighthave/openssl-android wymagany jest jakiś wiedząc w NDK do kompilacji biblioteki, aby go (.so), jest bardzo perfermant użyć natywnej biblioteki otwartej jak SSL do wygrania perfermancy

0

spróbuje użyć libzip renderowanie biblioteka. Jest to biblioteka C i jest tam Android NDK package, więc możesz jej użyć ponownie na iOS i Androidzie