2015-10-19 18 views
6

Esiste una libreria in grado di zippare file con password utilizzando la crittografia AES?Come comprimere il file con password (AES) per iOS e Android?

Abbiamo trovato questo per iOS: https://github.com/gianlucabertani/Objective-Zip

+0

Ho usato ZipArchive per creare file zip con password e decomprimerli. L'unico svantaggio è che non può essere decompresso da nessun altro programma mac. link di riferimento: https://github.com/ZipArchive/ZipArchive – Sneha

+0

Hey, grazie per aver risposto. È in grado di proteggere il file zip con password? – user1872384

+0

sì. Nessun altro programma può decomprimerlo a parte ZipArchive :). A volte è difficile eseguire il debug in quanto è necessario creare un programma su mac OSX per decomprimerlo :). – Sneha

risposta

1

Per Android, c'è un post sul blog piacevole per decomprimere i file qui: http://blog.alutam.com/2009/10/31/reading-password-protected-zip-files-in-java/ Questo è implementato utilizzando standard di 7-zip (in realtà una forma più antica di PKWARE zip e non AES), quindi puoi decomprimere i file creati da altre piattaforme pure

Tuttavia, preferisco usare questo: zip4j, perché ha già librerie java e puoi semplicemente integrarle nel tuo progetto Android e poiché l'integrazione di librerie JAVA è abbastanza facile , ottieni una soluzione rapida. Inoltre, poiché questo supporta AES, è più pertinente alla tua domanda

Modifica: Un mio amico utilizza Minizip for iOS per implementare zipping/decompressione per il suo progetto iOS. Puoi provare che

FYI: Non siamo riusciti a far interagire zip4j e Minizip l'uno con l'altro quando abbiamo usato le password (compresso un archivio in Andropid e decompresso in iOS e viceversa) (abbiamo provato dopo aver letto il tuo post, quindi abbiamo trascorso poco tempo fino ad ora). Non postare qui se si tenta questi e fare un passo avanti in questa direzione

+0

Thx per rispondere. Hai qualche raccomandazione per iOS? – user1872384

+0

@ user1872384 Modificata la mia risposta, per favore controlla –

+0

@ user1872384 Cosa hai postato nella tua domanda: Object-ve-zip per iOS, anche questo è buono. In realtà, si tratta di un wrapper su Minizip per iOS –

5

UPDATE:

impostazione password aggiornata nei parametri e metodo di creazione file zip.

È possibile utilizzare libreria Zip4j http://www.lingala.net/zip4j/download.php

se si vuole AES Encryption inoltre è possibile fare con il seguente codice

// 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() imposta il tipo di crittografia che si desidera. e setAesKeyStrength() imposta la forza dell'algoritmo di crittografia.

+0

come file zip esistente protetto da password utilizzando la libreria Zip4j in Android? –

+0

È possibile impostare direttamente la password sull'oggetto ZipFile utilizzando il metodo 'setPassword()' –

+0

'try { ZipFile zipFile = new ZipFile (output_path); zipFile.setPassword ("pass"); } catch (ZipException e) { e.printStackTrace(); } 'non funziona –

1

È possibile utilizzare OpenSSL per Android https://github.com/eighthave/openssl-android è necessario un po 'di sapere in NDK per la libreria di compilazione per renderlo (.so), è molto perfermant da usare libreria nativa come SSL aperto a vincere qualche perfermancy

0

tenta di utilizzare libzip biblioteca. È una libreria C e c'è lo Android NDK package, quindi puoi riutilizzarlo su iOS e Android