1

我正在尝试将受密码保护的 zip 文件作为 base64 字符串发送。

data = BytesIO()
zip = zipfile.ZipFile(data, 'w') 
zip.writestr('test.csv', 'Hello, World')
zip.setpassword(b'1234')
zip.close()
b64zip = base64.b64encode(data.getvalue()).decode('utf-8')

然后将此b64zip变量解析为电子邮件附件。

但是,当我尝试解压缩 zip 时,它不会提示输入密码。正在使用此线程作为参考:   zipfile:如何为 Zipfile 设置密码?

如何将受密码保护的 zip 文件创建为 base64 字符串?

4

1 回答 1

2

你犯了一些错误:

  1. 您已经打开了一个要写入的 zip 文件,而 zip 文件路径就是数据本身。
  2. 您正在尝试压缩数据而不是错误的文件。您应该加密数据,而不是压缩它。
  3. 如果要压缩数据,请将其写入 TXT 文件,然后压缩 TXT 文件。
  4. 尝试使用另一个压缩库,例如:[pyunpack、Pyzipper、pyminizip,...]。

我已经通过使用pyminizip库解决了这个问题:

import pyminizip as pyzip

data = 'stored data'.encode()
with open(".\\data.txt", "wb") as dt : dt.write(data)
pyzip.compress("data.txt", "", "data.zip", "PASSWORD", 8)
于 2021-10-06T18:28:59.413 回答