永发信息网

如何查看压缩文件的压缩算法?

答案:2  悬赏:60  手机版
解决时间 2021-01-27 16:50
我想知道一个破损的压缩文件的压缩算法是什么,不知有什么软件可以帮忙。谁帮忙介绍一个,谢谢了。
最佳答案
可以尝试先用Toolbox把破损的文件恢复一下
全部回答
主要是看文件格式,像rmvb等格式都是已经压缩过的了,再压空间不大,还有就是独立格式文件,一般系统无法识别,并且文件名比较怪的都是别人独立开发的格式,这些也没什么压缩空间,算法你要看那格式种了,系统常见的文件压缩算法都是 zip文件的总体格式 分文件头信息+文件压缩数据 中心目录+中心目录记录结束符 1.分文件头信息: 字节数 描述 4 分文件头信息标志(0x04034b50) 2 解压缩所需版本 2 通用比特标志位(置比特0位=加密;置比特1位=使用压 缩方式6,并使用8k变化目录,否则使用4k变化目录;置比特2位=使用压 缩方式6,并使用3个shannonfano树对变化目录输出编码,否则使用2个 shannonfano树对变化目录输出编码,其它比特位未用) 2 压缩方式(0=不压缩,1=缩小,2=以压缩因素1缩小,3=以 压缩因素2缩小,4=以压缩因素3缩小,5=以压缩因素4缩小,6=自展) 2 文件最后修改时间 2 文件最后修改日期 4 32位校验码 4 压缩文件大小 4 未压缩文件大小 2 文件名长 2 扩展段长 ? 文件名(不定长) ? 扩展段(不定长) 2.中心目录结构 文件头信息...中心目录记录结束符 文件头: 字节数 描述 4 中心文件头信息标志(0x02014b50) 2 主机操作系统(高位字节表示主机操作系统,低位字 节表示zip压缩软件版本号,其值除以10表示主版本号,其值模10表示 次版本号。0=ms-dos,os/2 fat文件系统,1=ami ga,2=vms,3=unix及 变种,4=vm/cms,5=atarist,6=os/2 hpfs,7=macintosh,8=z-system,9 =c p/m,10-255未用) 2 解压缩所需版本 2 通用比特标志 2 压缩方式 2 文件最后修改时间(用标准的ms-dos时间日 期格式 编码) 2 文件最后修改日期 4 32位校验码(使用david schwaderer的crc-32算法产 生) 4 压缩文件大小 4 未压缩文件大小 2 文件名长 2 扩展段长 2 文件注释长(分别为文件名长,扩展段,注释 段,小于 64k) 2 磁盘起始号(本文件在磁盘中的起始号) 2 内部文件属性(最低位若置1,表示为asc文本,否则为 二进制数据,其它位未用) 4 外部文件属性(依赖于主机操作系统) 4 分文件头相对位移 ? 文件名(不定长) ? 扩展段(不定长,用于未来扩展,低版本为0长) ? 文件注释(不定长) 3.中心目录记录结束符 字节数 描述 4 中心目录标记结束符(0x06054b50) 2 磁盘号(其中包括中心目录结束记录) 2 磁盘中心目录起始号 2 磁盘中心目录入口总数 2 中心目录入口总数(zip文件中的文件总数) 2 整个中心目录大小 4 关于起始磁盘号的中心目录初始偏移 2 zip文件注释长度 ? zip文件注释(不定长) 加密方法 pkzip中使用的加密方法由roger schlafly提供。zip文件在解压 缩前必须先解密。每个加密文件具有一个12字节的加密文件头扩展信 息,存储于数据区的起始位置,加密前先设置一个起始值,然后被三个3 2位的密钥加密。密钥被使用者提供的口令初始化。12个字节加密之 后,由pkzip的伪随机数产生方法,结合pkzip中使用crc-32算法对密钥 进行更新。 具体实施分为三步: 1.用口令对三个32位密钥初始化。 k(0)=305419896,k(1)=591751049,k(2)=878082192 循环 for i=0 to length(password)-1 调用更新密钥函数 update_keys(password(i)) 结束循环(循环口令长度次) 其中更新密钥函数为: update_keys(char): key(0)=crc32(key(0),char) key(1)=key(1)+(key(0)& 000000ffh) key(1)=key(1)*134775813+1 key(2)=crc32(key(2),key(1)〉〉24) end update_keys crc32函数中,给定一个4字节的crc值和一个字符,返回一个由crc -32算法更新的crc。具体为: crc32(c,b)=crc32tab[(c^b)&0xff]^(c>>8),crc32tab[256]的值 为固定的256个4字节数。 2.读取并加密12字节的加密头,再次对密钥进行初始化。 将12个字节的加密头读入缓冲区buffer(0)至buffer(11),循环fo r i=0 to 11 c=buffer(i)^decrypt_byte() update_keys(c) buffer(i)=c 结束循环(循环12次) 其中的decrypt_byte()函数为: unsigned char decrypt_byte() local unsigned short temp temp=key(2)¦2 decrypt_byte=((temp*(temp^1))>>8)&0xff end decrypt_byte 该步结束后,缓冲区中最后的二个字节buffer(10)和buffer(11) 将成为加密文件校验码的二个最高位(按低至高顺序存放)。对zip加 密文件进行解压缩前,pkunzip软件将使用者提供的口令按上述二个步 骤进行处理,得到的结果与校验码的二个高位字节进行比较,只有当提 供了正确的口令时,结果一致,才能进行后续的解压缩过程,否则,pkzi p报告错误信息,程序自动结束。 3.读取压缩的数据流并以加密密钥对其进行加密。 压缩数据流按下述过程加密: 循环 直至数据流结束 c=数据流的一个字节 temp=c^decrypt_byte() update_keys(temp) 输出temp 结束循环
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
红灯笼花店地址有知道的么?有点事想过去
丁宁摄影怎么去啊,我要去那办事
广西有哪几个卫校?
一种液体饮料采用长方体塑封纸密封包装从外面
请问冰箱底层结了冰,抽层打不开,怎么办?冰
花之韵(观山路商贸小区大路旁)地址在什么地方
斲梓的意思是什么啊?知道的请说下!
抒的姓名学解释是什么
光影视觉影像工作室(无分店)地址在什么地方,
1.根号16是二次根式么 2. 根号 b的平方-1 是
13年的13寸苹果笔记,256寸,i5基本全新没有
月光宝贝孕婴高端儿童摄影地址有知道的么?有
馨园花店(观山路全友家居对面)地址好找么,我
拨食的意思是什么啊?知道的请说下!
先化简 后求值:(6x²y+3xy²+4)-2
推荐资讯
iPad A1395怎样更新系统
个税系统申报时出现2107:执行存储过程/SQL语
博大驾校(郑州惠济)地址好找么,我有些事要过
心口不一的意思是什么啊?知道的请说下!
广西艺术学院设计类的就业情况怎样?
我玩了表妹一个月
中国电信(新街营业部)(214省道新街镇附近中国
吐鲁番市艾丁湖乡克燃木中学怎么去啊,我要去
药店名的含义
我发200微信红包给同事,她红包记录领取了,
以《懒惰不可取》为题高中作文
为什么oppo手机菜单栏中字迹模糊还一闪一闪的
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?