Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Python从zipfile中剥离密码加密_Python_Email_Zip_Base64_Stringio - Fatal编程技术网

如何使用Python从zipfile中剥离密码加密

如何使用Python从zipfile中剥离密码加密,python,email,zip,base64,stringio,Python,Email,Zip,Base64,Stringio,我有一个用例,在这个用例中,我需要对附加到电子邮件的受密码保护的zip文件进行解密,并将其替换为未加密的相同zip文件。到目前为止,我所拥有的: import zipfile import StringIO ... if part.get_content_type() == "application/zip": encrypted_string = part.get_payload().decode("base64") encrypted_zip = zipfile.ZipF

我有一个用例,在这个用例中,我需要对附加到电子邮件的受密码保护的zip文件进行解密,并将其替换为未加密的相同zip文件。到目前为止,我所拥有的:

import zipfile
import StringIO

...

if part.get_content_type() == "application/zip":
    encrypted_string = part.get_payload().decode("base64")
    encrypted_zip = zipfile.ZipFile(StringIO(encrypted_string))
    encrypted_zip.setpassword("password")
我知道zip文件现在可以像我所做的那样进行解密
encrypted\u zip.namelist()
,并且可以正常工作。现在我在var-encrypted_-zip中有了常规的zip,我只想对它进行base64编码,替换当前附件的有效负载,并前进到下一个附件。但是,ZipFile没有“.to_string()”方法,我可以用它来重新编码


我如何做到这一点

您可以创建一个临时存档来删除密码:

import zipfile
import StringIO


path = "dev.zip"   
encrypted_zip = zipfile.ZipFile( path  )
encrypted_zip.setpassword("pass")
print encrypted_zip.namelist()

with zipfile.ZipFile('spam.zip', 'w') as myzip:
    for nested_file in encrypted_zip.namelist():
        myzip.write(encrypted_zip.read(nested_file))

脚本将受密码保护的存档“dev.zip”的文件复制到未加密的存档“spam.zip”中。(不要忘记在之后销毁存档)。

您可以创建一个临时存档来删除密码:

import zipfile
import StringIO


path = "dev.zip"   
encrypted_zip = zipfile.ZipFile( path  )
encrypted_zip.setpassword("pass")
print encrypted_zip.namelist()

with zipfile.ZipFile('spam.zip', 'w') as myzip:
    for nested_file in encrypted_zip.namelist():
        myzip.write(encrypted_zip.read(nested_file))

脚本将受密码保护的存档“dev.zip”的文件复制到未加密的存档“spam.zip”中。(不要忘记在之后销毁存档)。

您不需要创建实际的文件;改用。你不需要创建一个实际的文件;请注意,zip文件可以在存档文件之间包含额外的信息——这就是可执行安装程序和(我认为)python鸡蛋的工作方式。如果您复制了这些文件,您将丢失额外的内容。请注意,zip文件可以在存档文件之间包含额外的信息——这就是可执行安装程序和(我认为)python鸡蛋的工作方式。如果您复制了这些文件,您将丢失额外的内容。