Я удивлен, что не нашел в Интернете ни одного фрагмента кода, совета или руководства, объясняющего, как зашифровать файл, используя только стандартные компоненты 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