ZipArchive::setEncryptionName

(PHP >= 7.2.0, PHP 8, PECL zip >= 1.14.0)

ZipArchive::setEncryptionName设置由其名称定义的条目的加密方法

描述

public ZipArchive::setEncryptionName(string $name, int $method, #[\SensitiveParameter] ?string $password = null): bool

设置由其名称定义的条目的加密方法。

参数

name

条目的名称。

method

由 ZipArchive::EM_ 常量之一定义的加密方法。

password

可选密码,缺少时使用默认值。

返回值

成功时返回 true,失败时返回 false

变更日志

版本 描述
8.0.0 password 现在可以为空。

示例

此示例创建一个名为 test.zip 的 ZIP 文件存档,并添加使用 AES 256 方法加密的文件 test.txt

示例 #1 存档和加密文件

<?php
$zip
= new ZipArchive();
if (
$zip->open('test.zip', ZipArchive::CREATE) === TRUE) {
$zip->setPassword('secret');
$zip->addFile('text.txt');
$zip->setEncryptionName('text.txt', ZipArchive::EM_AES_256);
$zip->close();
echo
"Ok\n";
} else {
echo
"KO\n";
}
?>

注释

注意:

此函数仅在针对 libzip ≥ 1.2.0 构建时可用。

参见

添加注释

用户贡献的注释 2 个注释

mauro dot chojrin at leewayweb dot com
4 年前
使用此函数在 Linux 上压缩的文件无法使用 Windows 解压缩。

Windows 内置解压缩器似乎存在一些不兼容性。

这里有一个更好的替代库:https://github.com/Ne-Lexa/php-zip

我使用 PKWARE 加密方法让 Windows 打开用它创建的文件
romke at romke dot nl
3 年前
在 Windows 上,默认情况下不支持“EM_AES_256”,但您可以使用 winrar、winzip 或 7zip。

起初我们有一个 128 个字符的密码(太长了),所有提取应用程序都会显示密码错误。

下一次我们使用 52 个字符的密码,这次成功了!
To Top