您的位置 首页 java

老司机告诉你经常用到的压缩文件都是什么原理

想必大家都用过压缩软件,这当然毫无争议。但一直在用的你,是否曾想过,文件压缩是怎样进行的?它利用了怎样的原理来进行压缩、加密的呢?

今天,搞机百科就给你好好讲讲压缩文件的奥秘。

一、压缩原理

首先我们先来看看压缩原理,文件压缩分为有损压缩和无损压缩两种,我们常用的WinRAR、 WinZip 都是属于无损压缩,其基本原理都是一样的,简单地说也就是把文件中的重复数据用更简洁的方法表示,例如一个文件中有1000个字母A,那么这将占用1KB的数据空间,如果用压缩算法就可以用1000A来表示,那么它只需要5个字节的数据空间,压缩比达到了200倍,那么由此看来,1000倍甚至更高倍的压缩比是可以实现的,但要求源文件必须有足够多的重复数据。

不过,我们平时使用的文件都不可能是这样的,所以通常文件 压缩比 都在10倍以下,如果某个软件声称对任何文件都能够产生这种超高压缩比的话,那它肯定就是具有欺骗性质的了。

很多网上下载的文件只有300MB或400MB,但是解压后,居然可以达到2GB甚至更多,也许你会奇怪,为什么你用WinRAR压缩同样的文件,就没有这样的压缩效果呢?其实这是因为这些文件是用多款不同的压缩软件进行压缩的,用压缩音频最好的压缩软件压缩音频文件,用压缩动画最好的压缩软件压缩动画文件。而且在压缩时所选的参数也是最佳的,这样也就保证了最后生成的压缩文件是最小的。

二、加密原理

明白了压缩原理,接下来我们看看压缩文件的加密原理,通常的 加密算法 主要分为分组加密和序列加密。一般的数据加密可考虑采用3DES、AES等成熟的分组加密算法。

而各大压缩软件都会基于加组加密进行变种、特化的方式来形成自己的加密方式。比如WinRAR用的是自己修改过的AES(分组加密算法的一种),进行初始化加密,之后使用上一次加密的结果进行自定义的乱序加密。

下面我们就以WinRAR加密为例,说下压缩加密的原理。

Winrar加密文件时,步骤很简单,就两步:首先,先把源文件压缩,压成一段数据段。然后再将压缩完的数据段加密。

上文已经解释过压缩了,这里不再重复,那么如何加密“压缩完的数据段”呢?

1、首先是获取密钥

获取密钥是明文的密码与Salt一起,通过HASH 算法 ,生成两个16字节的密钥。(一个是KEY(AES算法的参数),一个是initVector)

2、然后用Key和initVector来加密压缩数据

这是一个循环加密的结构,每16字节作为一个块,进行加密(这可能正是为什么加密完的文件长度总为16倍数的原因)。加密采用AES算法(RAR采用的是AES的rijndael的标准应用)。这里注意:AES加密前,有一个异或运算,是先将每16字节块与上一个16字节块加密结果进行异或,然后再进行AES算法的。

3、关于解密

由于AES算法是对称的,所以解密的过程,是加密过程的逆运算。但解密时AES算法过程与加密所用的不一样(是因为解密过程中由KEY生成的子密钥表不一样)。仍然需要我们将密码输入,与salt一起生成两个16字节密钥,KEY和initVector。

解密的过程是解密后的数据块进行解压缩,然后解成源文件,对该文件进行CRC校验,存在RAR文件中的源文件CRC校验码比较,相同则密码正确,不相同则密码错误。

三、压缩软件大搜罗

压缩软件是我们日常网络生活必备的工具之一,下面搞机百科就将目前市面上的多款压缩软件都搜罗来,让大家有更多的选择。

1、WinRAR

这个就不说了。

2、酷压:国产压缩先驱

作为国产压缩的革命先驱,酷压一直秉承着免费开源的理念,为后来大批的国产压缩软件的兴起提供了技术借鉴。但它不像其它厂商那样野蛮生长,在 压缩格式 上比较循规蹈矩,从不去触WinRAR的眉头。酷压发布之后,以其更小、更快、更好、更安全、更简洁迅速获得广大用户的青睐。但单一的功能性让酷压在国产压缩软件的围攻下逐渐销声匿迹,但它仍像一盏明灯,为国产压缩软件指引方向。

3、7-ZIP——老牌开源压缩软件

7-ZIP不用多说,是世界顶级开源跨平台压缩软件,曾经是WinRAR最大的对头。二者为到底是RAR格式优越,还是ZIP格式优越多年以来一直争执不休,也无法握手言和,相互兼容。但是唯独有点丑,所以常常被人忽略。其性能当然是强悍的。

4、 快压 ——生命力最旺盛的压缩软件

快压也是国产压缩软件大战时期诞生的,工具类软件普遍生存艰难,但是它却如此持久旺盛。如果在百度搜索压缩软件,排名第一的就是它的推广。还有它自己的装机联盟推广。而且还大有以其号称超高压缩比的KZ格式一统江湖之势。

快压广告较多,就它开展装机联盟来说,已经走了歪路,恐怕是打广告展示,主页锁定,流量劫持的歪主意。

5、好压——全家桶大礼包

好压曾经是国内最好用的压缩软件没有之一,但是单纯工具类的软件生存艰难,最后只能寄人篱下。不仅令人扼腕。自被2345收购之后,可谓是得遇伯,春风得意,一副天际蓝把自己妆点的油头粉面。技术上在原有压缩功能的基础上开发了自解压和工具箱,工具箱集成了批量文件改名、虚拟光驱在内的小工具,也集成了2345浏览器,2345看图王,2345安全卫士在内的全家桶雷区。

6、WinMount——不需要解压而直接使用 压缩包 内文件

WinMount是国人开发的一款压缩软件,说它是压缩软件不太准确,应该称之为可以不用解压而读取使用压缩包内文件的虚拟光驱。它同时也真的是一个虚拟光驱,可以加载使用ISO光盘文件。

它可以把 ZIP RAR ISO BIN MDF MNT 文件 mount 为一个新的盘符,这样你就可以直接使用里面的文件了, 不需要展开。节省时间,节省空间。WinMount 可以建一个空的2GB的盘,经常有人问这个有什么用。这个空盘实际上相当于一个 RAMDisk,就是在内存中的虚拟盘。所以它肯定速度快,但一关机就什么都没有了。它新建立的时候,即使是新建一个1GB的空盘,实际上不消耗什么内存。当有写操作时,才会逐渐申请内存。

7、360压缩——带木马查杀的国产压缩软件

360总是有那么多鬼点子,当初凭借浏览器一个小小的收藏夹同步功能迅速占领广大用户。如今在压缩上也是以贴心的功能讨取用户欢心。独创的WinRAR界面和360界面无缝切换,使用户很快过度;贴心的木马查杀功能,让压缩软件内的病毒无处遁形。

在技术和功能上自不用说,依然全面而便捷。通过朝阳群众提供的RAR插件,能轻而易举对RAR格式进行各种操作。

8、 PeaZip ——跨平台免费开源压缩软件

PeaZip是一款基于JAVA的开源跨平台软件,同时支持Windows和Linux系统。Windows自不用说,但是在Linux操作系统下要想找一款有头有脸的压缩软件,那就非它莫属了。

它支持除开RAR格式以外的大部分格式,还有自有格式PEA。操作上也与其它压缩软件大同小异。

9、FreeArc——强悍的加密功能

FreeArc同样是一款开源免费跨平台的压缩软件,它在汲取7-ZIP额优势基础上又有了很大的提升,速度上号称具有 WinRAR 、7-Zip 两倍以上的压缩速度,技术上集成了多种过滤器和压缩算法。它不仅支持数据恢复,还是支持AES+Twofish+Serpent算法加密,支持使用大于1GB的字典,支持使用外部压缩软件。

10、Bandizip——最美压缩软件

这是一款韩国公司Bandisoft开发的压缩软件,放在最后因为最近中韩关系紧张,但这的确是一款好软件。在国产压缩软件兴起之前,被认为是最好替代WinRAR的压缩软件之一。这款软件最近发布了6.0版本,颜值可谓是压缩软件巅峰的存在。

它有着漂亮的脸蛋,却不是中看不中用的花瓶。有着小巧的身材,全面的格式,便捷的操作。它支持WinZip、7-Zip 和 WinRAR 以及其它压缩格式。

看到这里,你是不是对压缩文件有了初步认识?你是否找到了心仪的压缩软件?如果这篇文章对你有点用处,希望继续关注智友搞机百科。

文章来源:智云一二三科技

文章标题:老司机告诉你经常用到的压缩文件都是什么原理

文章地址:https://www.zhihuclub.com/179943.shtml

关于作者: 智云科技

热门文章

网站地图