ZipArchive::setEncryptionName

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

ZipArchive::setEncryptionName名前で定義されたエントリの暗号化方式を設定する

説明

public ZipArchive::setEncryptionName(string $name, int $method, ?string $password = null): bool

名前で定義されたエントリの暗号化方式を設定する

パラメータ

name

エントリの名前です

method

ZipArchive::EM_ 定数のうちのひとつによって定義された暗号化方式

password

オプションで指定するパスワード。 指定されない場合はデフォルトの値が使われます。

返り値

成功した場合に true を、失敗した場合に false を返します。

変更履歴

バージョン 説明
8.0.0 password は、nullable になりました。

この例は、ZIP ファイルアーカイブ test.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 でビルドされた場合にのみ利用可能です。

参考

add a note add a note

User Contributed Notes 2 notes

up
4
mauro dot chojrin at leewayweb dot com
1 year 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
0
romke at romke dot nl
5 months 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