Я работаю с приложением CodeIgniter для шифрования загруженных файлов, а затем расшифровываю их при загрузке, чтобы их можно было безопасно хранить (наряду с другими мерами безопасности).Все это работает нормально, кроме файлов docx (и других файлов Microsoft Office 2007+).Когда они загружаются, они успешно расшифровываются, но Office обнаруживает их как поврежденные.Их можно исправить, поэтому они не полностью повреждены, но что-то изменилось в файле по сравнению с оригинальной версией, из-за чего Office видит их как поврежденные.Как я уже упоминал, этого не происходит с любыми другими типами файлов (которые я заметил).Файлы docx также немного различаются по размеру (только в байтах), тогда как другие типы - нет.
Для шифрования я загружаю файл, считываю содержимое в строку с помощью file_get_contents (), затем запускаюстрока с помощью метода codeIgniter's encode () в библиотеке шифрования, затем сохраните файл обратно на диск, удалив оригинал:
function mcrypt_encode($data, $key)
{
$init_size = mcrypt_get_iv_size($this->_get_cipher(), $this->_get_mode());
$init_vect = mcrypt_create_iv($init_size, MCRYPT_RAND);
return $this->_add_cipher_noise($init_vect.mcrypt_encrypt($this->_get_cipher(), $key, $data, $this->_get_mode(), $init_vect), $key);
}
и декодиру:через CodeIgniter's force_download ()
Шифр по умолчанию - MCRYPT_RIJNDAEL_256, а режим - MCRYPT_MODE_CBC.Mcrypt включен на моем сервере вместе с MCRYPT_RIJNDAEL_256.
Если кто-нибудь и укажет мне правильное направление относительно того, почему это может происходить, это было бы очень полезно.
Большое спасибо