PHP 7.4.22 Released!

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
11 months 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
4 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