从目录中获取所有文件的名称,并对它们执行“ for”操作

时间:2019-05-17 09:57:34

标签: php

我有一个php代码,可以读取加密的文件并将其解密。什么是整体?也就是说,有一个文件夹仅包含4/5加密文件,我想解密所有文件,最好是使用Win rar。

<?php

$file= "text.txt";

    $decrypted = decrypt_file($file,'pass');
    header('Content-type:application/txt');
    fpassthru($decrypted);

function decrypt_file($file,$passphrase){
    $iv = substr(md5("\x18\x3C\x58".$passphrase,true),0,8);
    $key = substr(md5("\x2D\xFC\xD8".$passphrase,true).md5("\x2D\xFC\xD8".$passphrase,true),0,24);
    $opts = array('iv'=>$iv, 'key'=>$key);
    $fp = fopen($file,'rb');
    stream_filter_append($fp, 'mdecrypt.tripledes', STREAM_FILTER_READ, $opts);
    return $fp;
  }

?>

1 个答案:

答案 0 :(得分:0)

glob()函数就是这样做的。要制作一个zip文件,您也可以使用ZipArchive。这是一个例子:

<?php
// create a zip file
$zip = new ZipArchive();
$res = $zip->open('test.zip', ZipArchive::CREATE);

$directory = 'path/to/folder';
foreach (glob("$directory/*.txt") as $filename) {
    // get the decrypted content
    $decrypted = decrypt_file($filename,'pass');

    // add it to the zip
    $zip->addFromString($filename, $decrypted);
}

$zip->close();

header("Location: test.zip");

因此,我们遍历每个文件,对其进行解密,然后将该文本作为自己的文件添加到zip中,并使用相同的文件名。完成后,在此示例中,我们剩下的是test.zip,因此我们将用户重定向到该文件以进行下载。您可以改为输出正确的zip的内容类型和关联的标头。还要注意,您可能需要整理权限来保存test.zip,并查看ZipArchive的{​​{1}}方法来提供正确的覆盖标志。祝你好运!