当前位置: 首页 > 面试题库 >

Python解压缩AES-128加密文件

谭富
2023-03-14
问题内容

由于ZipFile会引发Bad
Password错误,因此是否可以使用python直接解压缩AES-128加密文件。如果我使用7zip,它可以工作,因此密码是正确的,但是再次需要将7zip安装为依赖项。

我试过的

from ZipFile import ZipFile
zip = ZipFile('test.zip')
zip.extractall(pwd='password')

这将引发“错误密码”异常。

使用7zip检查文件

7z l -slt test.zip

返回

Encrypted = +
Method = pkAES-128 Deflate

问题答案:

Python标准库中的zipfile模块仅支持CRC32加密的zip文件(请参阅此处:http
:
//hg.python.org/cpython/file/71adf21421d9/Lib/zipfile.py#l420)。因此,无法避免某些第三方依赖。

最简单的方法是仅安装7zip并7z使用subprocess标准库中的模块调用命令行实用程序:

import subprocess
subprocess.call(["7z", "x", "-ppassword", "test.zip"])

另一个选择是python模块“
PyLzma”,它也可以处理AES加密的7zip存档:https :
//github.com/fancycode/pylzma。它不直接支持解密经典zip文件,但您可以使用其例程编写自己的解压缩器函数



 类似资料:
  • 我用java编写了这段代码,以便解密密文。我有钥匙。对我来说,一切都是正确的,但我有我要解释的问题。 这是我的代码: 我收到以下错误: 出了什么问题?我知道这个问题在某种程度上与衬垫有关,但我不知道确切的解决方案。我只有一个密文IV和密钥。

  • 我正在尝试在python中实现此代码(我是python新手),它给我以下错误: attribute error:“str”对象没有属性“decode” 如果我们删除 只是为了避免这样的错误: 但它给我以下错误: ValueError:IV必须为16字节长 因为算法需要,我必须删除 有没有人知道我该怎么做才能使这段代码工作?

  • 我正在尝试在运行FreeRTOS的微处理器上使用mbedTLS加密一些文本。我正在使用带有PKCS7填充的AES 128 CBC。如果我尝试在mbedTLS中加密,并在文本少于16个字符时在Java中解密,则可以正常工作。我可以在Java中解密它,并且文本匹配。如果它更长,那么它就不再有效。我做错了什么? mbedTLS 代码: Java代码: Java抛出javax.crypto。BadPadd

  • 我试图解密AES-128加密的m3u8视频文件,例如: m3u8 文件 : 我尝试过使用openssl: 键.txt包含很长的键 - 我做错了什么?

  • 问题内容: 我一直在尝试使用AES-128 CBC解密字符串,该字符串最初是使用JAVA AES加密加密的。在Java中,使用PKCS7填充。而且我尝试使用类似的PHP代码进行加密和解密。但是我得到了不同的结果。 我的Java代码 以及我正在使用的等效PHP代码。 在Java中 纯文本= 123456 密码文本= tpyxISJ83dqEs3uw8bN / + w =​​= 在PHP中 纯文本=

  • 我一直在尝试使用AES-128 CBC解密一个字符串,它最初是使用JAVA AES加密加密的。在java中,使用了PKCS7填充。我试着用类似的PHP代码进行加密和解密。但我得到了不同的结果。 我的Java代码 以及我正在使用的等效PHP代码。 在Java 纯文本=123456 密码文本=tpyxISJ83dqEs3uw8bN/w== 在PHP中 纯文本=123456 密码文本=ierqftckt