ZipArchive::setEncryptionName
(PHP >= 7.2.0, PHP 8, PECL zip >= 1.14.0)
ZipArchive::setEncryptionName — Set the encryption method of an entry defined by its name
说明
public ZipArchive::setEncryptionName(string
$name
, int $method
, #[\SensitiveParameter] ?string $password
= null
): boolSet the encryption method of an entry defined by its name.
参数
name
-
Name of the entry.
method
-
The encryption method defined by one of the ZipArchive::EM_ constants.
password
-
Optional password, default used when missing.
更新日志
版本 | 说明 |
---|---|
8.0.0 |
password is now nullable.
|
示例
This example creates a ZIP file archive test.zip and add the file test.txt encrypted using the AES 256 method.
示例 #1 Archive and encrypt a file
<?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";
}
?>
注释
注意:
This function is only available if built against libzip ≥ 1.2.0.
参见
- ZipArchive::setPassword() - Set the password for the active archive
- ZipArchive::setEncryptionIndex() - Set the encryption method of an entry defined by its index
+添加备注
用户贡献的备注 3 notes
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
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!
Anonymous ¶
3 months 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);
备份地址:http://www.lvesu.com/blog/php/ziparchive.setencryptionname.php