使用Python创建加密的ZIP文件

python zip

24225 观看

4回复

19570 作者的声誉

我在Python 2.5中使用ZipFile创建一个ZIP文件,它到目前为止工作正常:

import zipfile, os

locfile = "test.txt"
loczip = os.path.splitext (locfile)[0] + ".zip"
zip = zipfile.ZipFile (loczip, "w")
zip.write (locfile)
zip.close()

但我找不到如何加密ZIP文件中的文件。我可以使用系统并调用PKZIP -s,但我想必须有更“Pythonic”的方式。我正在寻找一个开源解决方案。

作者: PabloG 的来源 发布者: 2008 年 8 月 20 日

回应 4


0

118582 作者的声誉

您可以使用Chilkat库。这是商业广告,但有免费评估,看起来很不错。

这是我从这里得到的一个例子:

import chilkat

# Demonstrates how to create a WinZip-compatible 128-bit AES strong encrypted zip
zip = chilkat.CkZip()
zip.UnlockComponent("anything for 30-day trial")

zip.NewZip("strongEncrypted.zip")

# Set the Encryption property = 4, which indicates WinZip compatible AES encryption.
zip.put_Encryption(4)
# The key length can be 128, 192, or 256.
zip.put_EncryptKeyLength(128)
zip.SetPassword("secret")

zip.AppendFiles("exampleData/*",True)
zip.WriteZip()
作者: Harley Holcombe 发布者: 2008 年 8 月 20 日

16

332 作者的声誉

我创建了一个简单的库来在python中创建一个密码加密的zip文件。- 在这里

import pyminizip

compression_level = 5 # 1-9
pyminizip.compress("src.txt", "dst.zip", "password", compression_level)

该库需要zlib。

我已经检查过该文件可以在WINDOWS / MAC中提取。

作者: Shin Aoyama 发布者: 2013 年 4 月 17 日

6

98095 作者的声誉

重复的问题https://stackoverflow.com/a/2366917/874188建议使用7z而不是zip。我的经历证明了这一点。

复制/粘贴@JFSebastian的答案也是为了完整性:

'myarchive.zip'使用开源7-Zip实用程序创建加密的zip存档(命名):

rc = subprocess.call(['7z', 'a', '-mem=AES256', '-pP4$$W0rd', '-y', 'myarchive.zip'] + 
                     ['first_file.txt', 'second.file'])

要安装7-Zip,请键入:

$ sudo apt-get install p7zip-full

要手动解压缩(以演示与zip实用程序的兼容性),请键入:

$ unzip myarchive.zip

P4$$W0rd在提示符下输入。

或者在Python 2.6+中相同:

>>> zipfile.ZipFile('myarchive.zip').extractall(pwd='P4$$W0rd')
作者: tripleee 发布者: 2014 年 12 月 12 日

-1

51 作者的声誉

@ tripleee的回答对我有帮助,请参阅下面的测试。

这段代码适用于Windows 8.1上的python 3.5.2(添加到系统的7z路径)。

rc = subprocess.call(['7z', 'a', output_filename + '.zip', '-mx9', '-pSecret^)'] + [src_folder + '/'])

有两个参数:

  1. -mx9 意味着最大压缩
  2. -pSecret^)意思是密码Secret^)。对于Windows操作系统^是逃避),但是当您解压缩时,它将需要输入^

如果没有^Windows操作系统,则在7z.exe创建zip文件时不会应用密码。

另外,如果你想使用-mheswitch,你需要的文件格式是7z而不是zip

我希望这可能有所帮助。

作者: zqcolor 发布者: 2016 年 10 月 20 日
32x32