使用Python解密AES加密的ZIP文件

时间:2020-03-26 07:31:15

标签: python aes

我需要设置一个Python进程,该进程能够获取特定文件夹中的每个ZIP文件并解压缩,以便访问和处理其中的数据。 向我提供ZIP文件的人显然是使用Java例程来这样做的,但是由于我不了解Java(甚至不知道密码学),因此我想使用Python。 他们给了我:

  • 密码
  • 初始化向量

他们还指定使用这种类型的命令行: openssl enc -d -aes-128-cbc -K XXXXXX -iv YYYYYYYYY -in in.zip -out out.zip

除其他外,我尝试了以下脚本,但是:

  • 它不使用初始化向量
  • 最终告诉我Testfile不是.zip文件。 (我尝试使用未加密的.zip文件,但效果很好)。
    import pyzipper

     Testfile = Local_path + 'Testfile.zip' with
     pyzipper.AESZipFile(Testfile) as f:
         f.pwd = b'XXXXXXXXXXXXXXXXX'
         print(f.infolist())
         file_content = f.read('testfile.txt')

我找不到适用于我的文件的任何解决方案,所以:

  • 您认为使用python可以做到吗
  • 如果可能的话,你愿意帮我吗?

非常感谢。

1 个答案:

答案 0 :(得分:1)

感谢您的帮助。确实,我放弃了使用pycrypto并使用子过程。 如果将来对任何人都有用,这是我用来解压缩名称包含在dico_zipfilename中的文件的解决方案。这些zipfile均通过具有已知密钥和iv的128-AES加密。 在此之前,我下载openssl,Opensslexe_path是openssl.exe的路径。

for i in range(0, len(v_dico_raw)):
     Name_zipfile = str(v_dico_raw[i][3])
     Path_fileinput = Local_path_zipped + str(Name_zipfile)
     Path_fileoutput = Local_path_unzipped + str(Name_zipfile)
     cmd_line = ['openssl', 'enc', '-d', '-aes-128-cbc', '-K', str(key), '-iv', str(iv), '-in', str(Path_fileinput), '-out', str(Path_fileoutput)]
        p = subprocess.Popen(cmd_line, cwd = Opensslexe_path)

为我解决了:)