¿Cómo comprimir archivos zip con contraseña (AES) para iOS y Android?

¿Hay una biblioteca que es capaz de comprimir el archivo con la contraseña mediante el cifrado AES?

Encontrado esto para iOS: https://github.com/gianlucabertani/Objective-Zip

ACTUALIZAR:

Configuración de contraseña actualizada en los parámetros y método de creación de archivo zip.

Puede utilizar la biblioteca Zip4j http://www.lingala.net/zip4j/download.php

Si usted quiere AES Encryption también puede hacer con el código siguiente

// 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 () establece los tipos de encriptación que desea. Y setAesKeyStrength () establece la intensidad del algoritmo de cifrado.

Para Android, hay una entrada de blog agradable para descomprimir archivos aquí: http://blog.alutam.com/2009/10/31/reading-password-protected-zip-files-in-java/ Esto se implementa utilizando 7- Zip estándar (en realidad una antigua forma de zip pkware y no AES), por lo que se puede descomprimir los archivos creados desde otras plataformas así

Sin embargo, prefiero usar esto: zip4j , ya que ya tiene librerías java y simplemente puedes integrarlas en tu proyecto de Android y desde su integración JAVA libs es bastante fácil, obtienes una solución rápida. Además, dado que esto apoya AES, es más relevante para su pregunta

Editar: Un amigo mío está utilizando Minizip para iOS para implementar zipping / unzipping para su proyecto iOS. Puedes probar eso

FYI: No podíamos hacer que zip4j y Minizip interactuaran entre sí cuando usamos contraseñas (archivar un archivo en Andropid, y descomprimir en iOS, y viceversa) (lo probamos después de leer tu post, así que hemos pasado poco tiempo hasta ahora). Haga el poste aquí si usted intenta éstos y hace un progreso en esta dirección

Puede utilizar OpenSSL para android https://github.com/eighthave/openssl-android se requiere algo de conocimiento en NDK para que la biblioteca de compilación lo muestre (.so), es muy perfermant utilizar la biblioteca nativa como abrir ssl para ganar algún perfermancy

Trate de usar la biblioteca libzip . Es una biblioteca C y hay un paquete de Android NDK , por lo que puedes reutilizarlo en iOS y Android

  • ¿Cómo adjunto la fuente de la Biblioteca de soporte de Android en Eclipse?
  • ¿Es posible mostrar svgz en Android?
  • ¿Cómo puedo mantener la estructura de las carpetas cuando comprime en Java?
  • Android Descargar Zip a la tarjeta SD?
  • Modificación del contenido de un archivo .aar de Android / Conversión a un formato .zip
  • Descomprimir archivo zip da "java.util.zip.ZipException: No se puede leer la versión" o "java.util.ZipException No se puede leer la versión de encabezado local 45"
  • Archivo de expansión de Android
  • Osmdroid - cambiar la carpeta del mapa local
  • Cómo android almacena y ejecuta programas
  • Compresión de datos en Android (aparte de java.util.zip?)
  • No se puede cargar el archivo TTF directamente desde un ZIP usando libzip y FreeType
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.