【问题标题】:PHP: Which ZipArchive::EM_ constant to use when encoding ZIP Archive with custom passwordPHP:使用自定义密码对 ZIP 存档进行编码时使用哪个 ZipArchive::EM_ 常量
【发布时间】:2020-03-23 11:56:50
【问题描述】:

我有一个关于使用密码编码 zip 文件的问题,该密码可从 PHP v 7.2 获得

当我使用方法对 ZIP 进行编码时 ZipArchive::setEncryptionName

有参数方法可以是:

  • ZipArchive::EM_AES_128
  • ZipArchive::EM_AES_192
  • ZipArchive::EM_AES_256

谁能告诉我/解释使用哪个以及为什么?

我现在使用 ZipArchive::EM_AES_256 因为我认为它是最安全的,但我的同事告诉我他无法打开它(他的 zip 软件甚至不要求输入密码) .

那么有没有一种适用于所有情况的方法?我们有很多人在我国使用的软件,很多老人可能会得到这些 ZIP 文件,要求它们可以打开,并且每个 zip 文件都有密码。

请考虑他们甚至可能使用 Windows XP 等。

【问题讨论】:

  • 好吧,只是说明问题仅在于 Windows 文件资源管理器,它可以打开 ZIP 文件,但无法解码 AES 编码,并且只能理解 ZipCrypto,它不能与 PHP 一起使用所以不是不可能打开 ZIP在 PHP 中创建的原生 Windows 文件资源管理器中的文件(使用密码)

标签: php encoding passwords zip


【解决方案1】:

根据您的评论,Windows 无法在本地解密 AES 加密的存档,即使在 Windows 10 等最新版本中也无法解密(请参阅why)。

PHP v8.0 添加了"traditional pkware encryption",这将允许 Windows 用户在没有第三方应用程序(7-Zip 等)的情况下处理文件。

对于 PHP v7.x,需要依赖 shell commands 或使用支持 ZipCrypto 加密算法的库(有时称为“pkware” - 根据创建 zip 格式的公司) )。最流行的zip libraries on packagist 中有几个使用ext-zip,因此它们不会在 PHP 7.x 上提供 PKWARE 加密。但是nelexa/zip 没有,它supports pkware encryption。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-11
    • 2013-02-01
    • 2010-12-12
    • 1970-01-01
    相关资源
    最近更新 更多