ZipArchive::setEncryptionName

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

ZipArchive::setEncryptionName β€” УстанавливаСт ΠΌΠ΅Ρ‚ΠΎΠ΄ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ записи ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ

ОписаниС

public function 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.

Π‘ΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ Ρ‚Π°ΠΊΠΆΠ΅

  • ZipArchive::setPassword() - УстанавливаСт пароля для Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ Π°Ρ€Ρ…ΠΈΠ²Π°
  • ZipArchive::setEncryptionIndex() - УстанавливаСт ΠΌΠ΅Ρ‚ΠΎΠ΄ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ записи ΠΏΠΎ индСксу
οΌ‹Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΡ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ 3 notes

up
9
mauro dot chojrin at leewayweb dot com ΒΆ
5 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
1
romke at romke dot nl ΒΆ
5 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!
up
0
Anonymous ΒΆ
1 year ago
When using setEncryptionName, the first parameter is equal to the entry name of the file you added.
In case you set an explicit entry name with the second parameters of the addFile method, then you need to use that entry name.
Using the first parameter of addFile will only work in case the second parameter is not used.

This works :
$zip->addFile('test.txt', 'my_awesome_textfile.txt');
$zip->setEncryptionName('my_awesome_textfile.txt', ZipArchive::EM_AES_256);

This does not work and will generate an archive without any encryption :
$zip->addFile('test.txt', 'my_awesome_textfile.txt');
$zip->setEncryptionName('text.txt', ZipArchive::EM_AES_256);