L'article mentionne 9 couches de fichiers zip, il ne s'agit donc pas simplement de compresser un tas de zéros. Pourquoi 9, pourquoi 10 fichiers dans chacun?
Tout d'abord, l'article de Wikipedia dit actuellement 5 couches avec 16 fichiers chacune. Je ne sais pas d'où vient l'écart, mais ce n'est pas si pertinent. La vraie question est de savoir pourquoi utiliser l'imbrication en premier lieu.
DEFLATE, la seule méthode de compression couramment prise en charge pour les fichiers zip *, a un taux de compression maximal de 1032. Cela peut être réalisé de manière asymptotique pour toute séquence répétitive de 1 à 3 octets. Peu importe ce que vous faites à un fichier zip, tant qu'il n'utilise que DEFLATE, la taille décompressée sera au maximum 1032 fois la taille du fichier zip d'origine.
Par conséquent, il est nécessaire d'utiliser des fichiers zip imbriqués pour obtenir des taux de compression vraiment scandaleux. Si vous avez 2 couches de compression, le rapport maximum devient 1032 ^ 2 = 1065024. Pour 3, c'est 1099104768, et ainsi de suite. Pour les 5 couches utilisées dans 42.zip, le taux de compression maximal théorique est de 1170572956434432. Comme vous pouvez le voir, le 42.zip réel est loin de ce niveau. Une partie de cela est la surcharge du format zip, et une partie de cela est qu'ils s'en moquaient.
Si je devais deviner, je dirais que 42.zip a été formé en créant simplement un gros fichier vide, et en le zippant et en le copiant à plusieurs reprises. Il n'y a aucune tentative de repousser les limites du format ou de maximiser la compression ou quoi que ce soit - ils ont simplement choisi arbitrairement 16 copies par couche. Le but était de créer une grande charge utile sans trop d'effort.
Remarque: d'autres formats de compression, tels que bzip2, offrent des taux de compression maximum beaucoup, beaucoup, beaucoup plus importants. Cependant, la plupart des analyseurs zip ne les acceptent pas.
PS Il est possible de créer un fichier zip qui se décompressera en une copie de lui-même (une quine). Vous pouvez également en créer un qui se décompresse en plusieurs copies. Par conséquent, si vous décompressez un fichier de manière récursive pour toujours, la taille maximale possible est infinie. La seule limitation est qu'il peut augmenter d'au plus 1032 à chaque itération.
PPS La figure 1032 suppose que les données de fichier dans le zip sont disjointes. Une particularité du format de fichier zip est qu'il a un répertoire central qui répertorie les fichiers dans l'archive et les décalages avec les données du fichier. Si vous créez plusieurs entrées de fichier pointant vers les mêmes données, vous pouvez obtenir des taux de compression beaucoup plus élevés même sans imbrication, mais un tel fichier zip est susceptible d'être rejeté par les analyseurs.