本网站(662p.com)打包出售,且带程序代码数据,662p.com域名,程序内核采用TP框架开发,需要联系扣扣:2360248666 /wx:lianweikj
精品域名一口价出售:1y1m.com(350元) ,6b7b.com(400元) , 5k5j.com(380元) , yayj.com(1800元), jiongzhun.com(1000元) , niuzen.com(2800元) , zennei.com(5000元)
需要联系扣扣:2360248666 /wx:lianweikj
Python实现加密的ZIP文件解压(密码已知
iamitnan · 499浏览 · 发布于2020-09-14 +关注

当ZIP文件的压缩密码已知时,可以通过调用zipfile库进行解压:

 import zipfile
 zip_file = zipfile.ZipFile(r'C:\test.zip')  
# 文件的路径与文件名
 zip_list = zip_file.namelist()  
# 得到压缩包里所有文件
 for f in zip_list:5     
zip_file.extract(f, r'C:\Test', pwd="123".encode("utf-8"))  
# 循环解压文件到指定目录6 zip_file.close()  
# 关闭文件,必须有,释放内存

当压缩包非加密时,只需修改上面第5行代码:

zip_file.extract(f, r'C:\Test')  # 循环解压文件到指定目录

但是博主在进行测试的时候,发现了一个问题,调用zipfile对传统加密的zip文件进行解压可以成功,但是当zip为非传统加密方式时无法解压,这里的传统加密指的什么呢?大家使用版本比较新的WinRAR进行zip加密压缩的时候,下面会有一个“ZIP传统加密'的选项:

 

当博主不勾选这个选项生成压缩包进行解压测试的时候,发现无法解压:

 

后查询资料并咨询前辈,得出如下解释:

       默认情况下,WinRAR在CTR模式下使用AES-256加密ZIP文件,而传统加密是通过CRC32加密,也即ZIP 2.0传统加密算法,虽然AES-256比ZIP 2.0传统加密算法安全得多,但它可能与一些旧的解压软件不兼容,而Python标准库中的zipfile模块只支持CRC32加密的zip文件,所以不采用传统加密方式是无法通过zipfile库进行解压的。

后来博主了解到,Python有个pyzipper库可以很好的兼容代替zipfile,可以读写AES加密的zip文件,目前博主还没有进行尝试


相关推荐

PHP实现部分字符隐藏

沙雕mars · 1320浏览 · 2019-04-28 09:47:56
Java中ArrayList和LinkedList区别

kenrry1992 · 903浏览 · 2019-05-08 21:14:54
Tomcat 下载及安装配置

manongba · 964浏览 · 2019-05-13 21:03:56
JAVA变量介绍

manongba · 959浏览 · 2019-05-13 21:05:52
什么是SpringBoot

iamitnan · 1084浏览 · 2019-05-14 22:20:36
加载中

0评论

评论
分类专栏
小鸟云服务器
扫码进入手机网页