2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > python 解压zip密码正确但解压失败 Python实现加密的ZIP文件解压(密码已知

python 解压zip密码正确但解压失败 Python实现加密的ZIP文件解压(密码已知

时间:2021-10-08 17:57:36

相关推荐

python 解压zip密码正确但解压失败 Python实现加密的ZIP文件解压(密码已知

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

importzipfile

zip_file=zipfile.ZipFile(r'C:\test.zip')

#文件的路径与文件名

zip_list=zip_file.namelist()

#得到压缩包里所有文件

forfinzip_list:5

zip_file.extract(f,r'C:\Test',pwd="123".encode("utf-8"))

#循环解压文件到指定目录6zip_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文件,目前博主还没有进行尝试

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。