在Windows上创建和提取密码保护的ZIP文件的7-Zip命令是什么?

96

在Mac/Linux上压缩/解压带密码保护的zip文件时,我使用以下命令:

zip -P password -r encrypted.zip folderIWantToZip

解压缩:

unzip -P password encrypted.zip

在 Windows 命令行上,(假设已安装 7zip),有哪些等效的命令?

我进行了研究,并发现使用 Java zip4j 库不可能进行密码加密。此外,Windows 没有像 Mac/Linux 那样的 zip 命令提示符。


http://sevenzip.sourceforge.jp/chm/cmdline/syntax.htm - ben75
你最后一句话表明你可能是想用Java来实现,这将是一个编程问题。但你实际上提出的问题不是关于编程的,应该发到SuperUser上。 - Ben Voigt
Google员工们,请不要对zip密码“保护”抱有任何信任。它并不是安全的。请考虑使用7zip或者rar。 - Frank N
在多用户操作系统上使用“-P”存在安全漏洞。建议改用“-e”。 - sunknudsen
4个回答

162

来自http://www.dotnetperls.com

7z a secure.7z * -pSECRET

位置:

7z        : name and path of 7-Zip executable
a         : add to archive
secure.7z : name of destination archive
*         : add all files from current directory to destination archive
-pSECRET  : specify the password "SECRET"

打开:

7z x secure.7z

然后输入秘密密码

注意: 如果密码包含空格或特殊字符,则用单引号括起来

7z a secure.7z * -p"pa$$word @|"

1
你应该能够将密码存储在文件中,并像这样启动命令:7z x secure.7z < passwd.txt。 - Gerard Rozsavolgyi
1
太好了,我刚刚使用RoboTask Lite实现了一些东西,将文件上传到云端(将文件7zip压缩到本地文件夹,然后同步到云端),只需通过单击托盘图标并使用这些参数即可。以前我是手动进行7zipping,非常烦恼,还必须重命名文件。 - ycomp
1
我尝试过这个,它创建了一个普通的归档文件,没有密码保护。 - BrainSlugs83
3
然后用单引号将其括起来,而你使用普通引号。 - J. Doe
3
最好让终端/控制台询问您密码,以确保特殊字符被正确捕获 7z a -p secure.7z * - Pawel Cioch
显示剩余6条评论

46

通用语法:

7z a archive_name target parameters

请检查您的7-Zip目录。根据您所使用的版本,语法中的7z可能会被替换为7za

参数:

  • -p 加密和提示输入密码。
  • -pPUT_PASSWORD_HERE(这将替换-p),如果您想预设密码且不提示,请使用此选项。
  • -mhe=on 隐藏文件结构,否则文件结构和名称将默认可见。

例如:这将提示输入密码并隐藏文件结构:

7z a archive_name target -p -mhe=on

例如,没有提示,可见的文件结构:

7z a archive_name target -pPUT_PASSWORD_HERE

等等。如果您将目标留空,7z将假定当前目录中的*,并默认递归目录。


1
如果有人想知道的话,相同的命令结构在Linux上也适用。 - no_one

14

完全自动化脚本化:

创建:

7z -mhc=on -mhe=on -pPasswordHere a %ZipDest% %WhatYouWantToZip%

解压缩:

7z x %ZipFile% -pPasswordHere

(可能需要根据情况进行设置:Set Path=C:\Program Files\7-Zip;%Path% )


1
mhc 是做什么的? - scrollout
根据7Zip文档,@scrollout可以“启用或禁用归档头压缩。默认模式为hc = on。如果启用了归档头压缩,则将使用LZMA方法压缩归档头。” - Helder

1
我可能有点晚,但我目前正在尝试开发一个程序,可以暴力破解密码保护的zip归档文件。首先,我尝试了在互联网上找到的所有命令,在cmd中提取它...但它从来没有起作用过...每次我尝试它时,cmd输出都说密钥是错误的,但实际上是正确的。我认为他们只是在当前版本中禁用了此功能。

我解决问题的方法是下载一个旧的7zip版本(4.?),并使用它通过cmd进行提取。

这是命令: "C:/Program Files (86)/old7-zip/7z.exe" x -pKey "C:/YOURE_ZIP_PATH"

第一个值(“C:/ Program Files(86)/ old7-zip / 7z.exe”)必须是您安装旧7zip的路径。x用于提取,-p用于您的密码。确保您在-p后面不加任何空格输入您的密码!最后一个值是要提取的zip存档文件。将zip提取到的目标将是cmd的当前路径。您可以使用cd YOURE_PATH更改它。

现在我通过Java执行此命令,并使用我的密码尝试。然后我检查cmd的错误输出流,如果为null,则密码正确!


一般信息:如果您需要下载7z程序,请从以下网址进行下载: https://www.7-zip.org/download.html 它将默认安装在此位置: C:\Program Files\7-Zip - serup

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接