Formato de compresión ZIP
# Formato de compresión ZIP

En informática, ZIP o zip es un formato de compresión sin pérdida, muy utilizado para la compresión de datos como documentos, imágenes o programas.

Para este tipo de archivos se utiliza generalmente la extensión ".zip".

Muchos programas, tanto comerciales como libres, lo utilizan y permiten su uso más habitual.

## Historia

El formato ZIP fue diseñado originalmente por Phil Katz, fundador de PKWARE. Katz liberó al público la documentación técnica del formato ZIP, y lanzó al mismo tiempo la primera versión de PKZIP en enero de 1989.

Katz había copiado ARC y convertido las rutinas de compresión de C a un código optimizado en ensamblador, que lo hacía mucho más rápido. Inicialmente, SEA intentó obtener una licencia por el compresor de Katz, llamado PKARC, pero Katz lo rechazó. SEA demandó entonces a Katz por infringir el copyright, y ganó.

## Información técnica

ZIP es un formato de fichero bastante simple, que comprime cada uno de los archivos de forma separada. Comprime cada archivo independientemente del resto de archivos comprimidos permite recuperar cada uno de los ficheros sin tener que leer el resto, lo que aumenta el rendimiento. El problema, es que el resultado de agrupar un número grande de pequeños archivos es siempre mayor que agrupar todos los archivos y comprimirlos como si fuera uno solo. A cambio, esto permite extraer cada archivo de forma independiente sin tener que procesar el archivo desde el principio.

La especificación de ZIP indica que cada archivo puede ser almacenado, o bien sin comprimir, o utilizando una amplia variedad de algoritmos de compresión. Sin embargo, en la práctica, ZIP se suele utilizar casi siempre con el algoritmo de Phil Katz.

ZIP soporta un sistema de cifrado simétrico basado en una clave única. Sin embargo, este sistema de cifrado es débil ante ataques de texto plano, ataque de diccionario y fuerza bruta. También soporta distribuir las partes de un archivo comprimido en distintos medios, generalmente disquetes.

Con el tiempo, se han ido incluyendo nuevas características, como nuevos métodos de cifrado. Sin embargo, estas nuevas características no están soportadas por las aplicaciones más utilizadas.

## Métodos de compresión

Cada fichero en un fichero zip es comprimido usando uno de los siguiente algoritmos numerados:

| Código | Método de compresión | Notas y referencias |
| - | - | - |
| 0 | Uncompressed (No comprimido) |
| 1 | Shrink (Contracción) | LZW con ajustes. Usado por PKZIP 0.x y 1.x. |
| 2–5 | Reduce (Reducción) | LZ77 + predicción. Usado por PKZIP v0.x. El código 2 usa factor de compresión 1, el código 3 usa factor de conversión 2, el código 4 usa factor de conversión 3 y el código 5 usa factor de conversión 4. |
| 6 | Implode (Implosión) | LZ77 con codificación de Huffman. Usado por PKZIP v1.x. |
| 7 | Tokenized | Reservado. |
| 8 | deflate | LZ77 con codificación de Huffman. Usado por PKZIP v2.0+. |
| 9 | Deflate64, también llamado Enhanced Deflate | versión de formato 2.1+. |
| 10 | PKWARE DCL Implode (antiguo IBM TERSE) | versión de formato 2.5+. |
| 12 | Bzip2 | versión de formato 4.6+. |
| 14 | LZMA (EFS) | Definido en especificación zip v6.3+. |
| 16 | IBM z/OS CMPSC |
| 18 | IBM TERSE |
| 19 | IBM LZ77 z Architecture (PFS) |
| 93 | Compresión Zstandard (zstd) |
| 94 | MP3 | Soportado por WinZip 21+. |
| 95 | Compresión XZ | Soportado por WinZip 18+. |
| 96 | Variante JPEG |
| 97 | WavPack | Definido en especificación zip v6.3.2+. |
| 98 | PPMd versión I, Rev 1 | Definido en especificación zip v6.3+. |
| 99 | AE-x encryption marker | Es un método de cifrado basado en contraseña que usa AES con modo CTR (counter mode) y HMAC-SHA1 |

Solo los tipos 0 (uncompressed) y 8 (deflate) es habitual verlos en archivos zip modernos. En ficheros zip antiguos es habitual ver tipos 1 (Shrink) y 6 (Implode). Los métodos con códigos del 1 al 6 son métodos desfasados y ya no se recomienda su uso.

## En la actualidad

Hoy, los archivos ZIP emplean la extensión de fichero .zip y tienen el tipo media MIME application/zip. Un archivo ZIP contiene uno o más archivos que están comprimidos o almacenados.

Muchas aplicaciones software, distintas de PKZIP, están disponibles para crear, modificar o abrir archivos zip. Destacan WinZip, WinRAR, PeaZip y 7-Zip.

Las versiones de Windows desde Windows Me también traen por defecto un plugin (zipfldr.dll) que permite mostrarlos con una interfaz reducida del Explorador de Windows, de forma parecida a los de archivos .cab (cabview.dll) ya presente en anteriores versiones del SO. Los archivos zip son denominados como "Carpeta comprimida (en zip)" confundiendo el hecho de que se almacena en un único fichero.

Las nuevas versiones de Mac OS X incluyen soporte ZIP integrado en Finder, haciéndolo el formato "oficial" de compresión en los Mac. Sin embargo, la mayoría de archivos de Mac todavía se comprimen y empaquetan con Stuffit o, cada vez más a menudo, mediante tarballs.

## Formatos derivados

Este formato es también muy usado para la creación de archivos con múltiples componentes, estando todos ellos comprimidos en un archivo en formato Zip, a menudo con alguna característica más, como el uso de manifests. El primero de ellos fue el formato Jar usado para la distribución de clases (.class) de Java. Las aplicaciones XUL (como Mozilla Firefox) y sus extensiones almacenan buena parte de sus archivos en archivos jar. El formato OpenDocument usado por Apache OpenOffice y OpenXML por Microsoft Office 2007 son archivos XML comprimidos en formato Zip.

