El formato de archivo zip está definido por PKWARE. Puede encontrar su especificación de archivo here.
En la parte superior se encuentra la especificación de cabecera:
A. encabezado del archivo local:
local file header signature 4 bytes (0x04034b50)
version needed to extract 2 bytes
general purpose bit flag 2 bytes
compression method 2 bytes
last mod file time 2 bytes
last mod file date 2 bytes
crc-32 4 bytes
compressed size 4 bytes
uncompressed size 4 bytes
file name length 2 bytes
extra field length 2 bytes
file name (variable size)
extra field (variable size)
De esto se puede ver que los primeros 4 bytes de la cabecera debe estar la firma del archivo que debe ser el valor hexadecimal 0x04034b50. El orden de bytes en el archivo es al revés: PKWARE especifica que "Todos los valores se almacenan en bytes pequeños a menos que se especifique lo contrario", por lo que si usa un editor hexadecimal para ver el archivo, verá 50 4b 03 04 como los primeros 4 bytes.
Puede usar esto para verificar si su archivo es un archivo zip. Si abre el archivo en el bloc de notas, notará que los primeros dos bytes (50 y 4b) son los caracteres ASCII PK.
+1 Excelente información. Pero idealmente, variaría de un proveedor a otro, lo que significa el algoritmo de compresión. –
http://en.wikipedia.org/wiki/ZIP_(file_format) –
El formato del archivo ZIP no varía de un proveedor a otro. Fue originalmente definido por PKWARE, pero muchos otros proveedores ahora admiten el mismo formato de compresión. El formato especifica el PK en el encabezado, por lo que incluso otros proveedores seguirán incluyendo esta parte del encabezado. Los diferentes formatos de archivo como arc, 7z, lhz, gzip, etc. tendrán diferentes especificaciones y diferentes encabezados, pero un archivo zip siempre tendrá esto en el encabezado. –