PHP 8.4.0 RC2 available for testing

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 теперь принимает значение null.

Примеры

В этом примере создаётся ZIP-архив test.zip, содержащий файл test.txt, зашифрованный с помощью AES 256.

Пример #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
"готово\n";
} else {
echo
"ошибка\n";
}

?>

Примечания

Замечание:

Функция доступна только если скомпилировано с модулем libzip ≥ 1.2.0.

Смотрите также

add a note

User Contributed Notes 2 notes

up
10
mauro dot chojrin at leewayweb dot com
4 years ago
Files compressed using this function on Linux won't be decompressed using Windows.

There seems to be some incompatibility with Windows built-in decompressor.

There's an alternative library that works better here: https://github.com/Ne-Lexa/php-zip

I got windows to open a file created with it by using the PKWARE encryption method
up
2
romke at romke dot nl
3 years ago
On windows is the "EM_AES_256" by default not supported, but you can use winrar, winzip or 7zip.

At first we had a password of 128 chars (this was to long) and all extract applications give an error that the password was incorrect.

The next time we did use a password of 52 chars., this time i did work!
To Top