一个42KB的文件,解压完其实是个4.5PB的“炸弹”……


一个42KB的文件,解压完其实是个4.5PB的“炸弹”……


更多科技趣闻剖析,欢迎点击右上角关注我~
差友们,听说过 ZIP 炸弹吗?
一个很小很小的,几十 KB 的压缩过后的文件,解压以后有几百万 GB ,好像炸弹一样 。
在继续介绍它之前,差评君想先问问各位都用过哪些压缩软件 。。。
WinRAR ?
或者 2345 好压?
还是开源的 7 - Zip ?
一个42KB的文件,解压完其实是个4.5PB的“炸弹”……


其实压缩软件虽然五花八门,但目的都很单纯:
把文件占用空间缩小 。
不过差评君上面提到的压缩软件,又不单纯是缩小空间 。
JPG 图片 , MP3 音乐格式也起到了压缩作用 。
但是 JPG, MP3 们执行的是有损压缩 。
一个42KB的文件,解压完其实是个4.5PB的“炸弹”……


一旦个文件被有损压缩的时候,会损失一部分数据 。
损失的代价就是,你无法从被压缩的文件还原出压缩前的文件 。
图片,音乐等多媒体在有的时候考虑可用性和传播性,对这样的结果是可以接受的 。
但对许多通用数据来说,往往需要的是无损压缩,比如 .zip。
对于无损压缩来说,算法非常重要,不同的算法能实现的压缩率和速度有很大差别 。
一个42KB的文件,解压完其实是个4.5PB的“炸弹”……


如上图所示,主流的算法一般在 30% - 40%。
而文章一开始介绍的 ZIP 炸弹,是一个名为 42.zip 的文件 。
它的初始大小是 42KB , 解压密码是 42。
一个42KB的文件,解压完其实是个4.5PB的“炸弹”……


解压之后的大小,足足有 4.5 PB。
嗯 。。。就是这么嚣张 。
解压这个 42.zip 以后会出现 16 个压缩包,每个压缩包又包含 16 个,如此循环 5 次,最后得到 16 的 5 次方个文件,也就是 1048576 个 。
一个42KB的文件,解压完其实是个4.5PB的“炸弹”……


这一百多万个最终文件,每个大小为 4.3 GB。
因此整个解压过程结束以后,会得到 1048576 * 4.6 GB = 4508876.8 GB
也就是 4508876.8 ÷ 1024 ÷ 1024 = 4.5 PB
还有比它更嚣张的 。
一个叫做 droste.zip 的大小为 28 KB 的文件,一旦被打开了以后,就会无限解压缩生成一份同样的文件,直到永远 。
这个文件名灵感应该取自德罗斯特效应 ( Droste Effect ),是指一张图片的部分与整张图片相同,无限循环 。。。如下图↓
一个42KB的文件,解压完其实是个4.5PB的“炸弹”……


这个名字源自一家叫德罗斯特的可可粉厂商做的商品包装 。。。
注意女仆手上拿着的产品图
一个42KB的文件,解压完其实是个4.5PB的“炸弹”……


咳咳 。。。扯远了 。
总而言之,这个 droste.zip 的核心原理就是输出结果为自身 。
举个例子,制作者大概做了这么一件事:
在引号里重复这句话 “ 在引号里重复这句话 ”
然后解压缩之后,硬盘就 。。。BOOM !
一个42KB的文件,解压完其实是个4.5PB的“炸弹”……


当然 。。。也有剑走偏锋思路不同的 。
有一段名为 《 彗星撞地球 》 的影片,也展现了神奇的压缩比率 。
这段 3D 影片如果直接放出来要 15 G 左右,效果 。。。放在它出生的年代 2000 年还真不差 。
一个42KB的文件,解压完其实是个4.5PB的“炸弹”……

推荐阅读