繁体   English   中英

如果文件使用 setEncryptionName 加密,如何在 PHP 中提取 zip 存档

[英]How to extract zip archive in PHP if file encrypted using setEncryptionName

我创建了 zip 并使用 setEncryptionName 进行加密,如下所示:

if($zip->open($zip_destination_real,\ZipArchive::CREATE) === TRUE) 
{
  $zip->addFile($filePath_real,'xyz.txt');   
  $zip->setEncryptionName('xyz.txt', \ZipArchive::EM_AES_256, '12345');         
  $zip->close();

}

现在,如何提取这个 zip 文件? extractTo function 返回 false。

$r = $zip->extractTo($dir_real); var_dump($r);

我使用 php 7.2

即使我手动提取它要求输入密码的文件夹。我按设置输入 12345,但弹出错误,说提取文件时发生错误。

你没有正确设置密码。

带密码的 Zip 文件:

# Creating new zip object
$zip = new ZipArchive();
if ($zip->open('file.zip', ZipArchive::CREATE) === TRUE) {

    # Setting password here
    $zip->setPassword('12345');

    # Adding some files to zip
    $zip->addFile('some-file.txt');
    $zip->setEncryptionName('some-file.txt', ZipArchive::EM_AES_256);

    # Closing instance of zip object
    $zip->close();

    exit("Done! Your zip is ready!")
} else {
    exit("Whoops:( Failed to create zip.");
}

并像这样解压缩:

# Creating new ZipArchive instance
$zip = new ZipArchive();

# Open file to read
if ($zip->open('file.zip') === true) {

    # Enter your password
    $zip->setPassword('12345');

    # Extract files to some destination
    # dirname(__FILE__) sets destination to directory of current file
    $zip->extractTo(dirname(__FILE__));

    # Closing instance of zip object
    $zip->close();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM