令我惊讶的是,我在网络上没有找到任何解释如何仅使用标准 php 组件加密文件的代码片段、建议或教程。
所以我在问你的建议:如何仅使用 mcrypt 和 php 标准函数来加密/解密文件?我没有使用 gnupg 的选项。不,实际上,我的问题是:如何在不弄乱我的文件的情况下执行上述操作?因为我已经对这些文件进行了加密/解密(使用 mcrypt/AES),它适用于 jpeg、PDF、一些 .doc 文件和有趣的密码保护 .docx 文件。它不适用于不安全的 .docx 文件和许多其他文件类型。
我目前的代码是这样的。基本上,我真的只是打开文件,用 mcrypt/AES 搅拌数据,然后将其写入服务器/让用户下载它。
上传后编码:
// using codeigniter's encryption library, which uses mcrypt and the AES cypher
$this->load->library('encrypt');
$pathandname = $config['upload_path'].$output['content'][$a]['file_name'];
$theFile = file_get_contents($pathandname);
$fh = fopen($pathandname,'w');
fwrite($fh,$this->encrypt->encode($theFile));
fclose($fh);
解码和下载:
$this->load->library('encrypt');
$pathandname = $filelocation.$results[0]['encryptedfile'];
$theFile = file_get_contents($pathandname);
$decrypted = $this->encrypt->decode($theFile);
force_download($filename, $decrypted); // a codeigniter function to force download via headers