Я делаю веб-сервер, который может загружать и скачивать все виды файлов с помощью php. (Сервер OS является Windows)
А когда файл загружен и загружен, он шифруется и дешифруется с использованием AES.
Я искал об этом, и я сделал это.
Но работает только файл .pdf, .csv, .txt, .pptx.
Когда я пытаюсь открыть расшифрованный файл .jpg, .png, .zip, .xlsx, он не открывается должным образом. Я не вижу изображения.
// File encryption code
$filename = $_FILES['user_file']["name"];
$key = '1234';
$iv = '12dasdq3g5b2434b';
$file = fopen('filePath', 'rb');
$fileData = fread($file, filesize('filePath'));
fclose($file);
$encryptedData = openssl_encrypt($fileData, "AES-256-CBC", $key, 0, $iv);
$fileToWrite = fopen('filePath', 'wb');
fwrite($fileToWrite, $encryptedData);
fclose($fileToWrite);
// File decryption code
$key = '1234';
$iv = '12dasdq3g5b2434b';
$file = fopen('filePath', 'rb');
$fileData = fread($file, filesize('filePath'));
fclose($file);
$decryptedData = openssl_decrypt($fileData, "AES-256-CBC", $key, 0, $iv);
header("Pragma: public");
header("Pragma: no-cache");
header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Expires: 0");
header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename=\"" . $filename . "\";");
$size = strlen($decryptedData);
header("Content-Length: " . $size);
echo $decryptedData;
die;
Я не знаю, почему это не работает с файлом изображения.
Есть ли проблемы с моим кодом?