Сегодня в этом уроке мы узнаем о шифровании и дешифровании файлов с помощью PHP. Это может быть очень полезно, когда мы сохраняем некоторые конфиденциальные или важные файлы на сервере. Никто не сможет получить доступ к файлу без ключевой фразы, которая использовалась для шифрования файла.
Примечание . Расширение mcrypt включено в PHP 5.4 до PHP 7.1. Он был удален из PHP 7.2 и перемещен в неофициальное расширение PECL, поскольку библиотека mcrypt больше не поддерживается. Для получения дополнительной информации, смотрите здесь .
Шифрование и дешифрование
Шифрование – это процесс кодирования сообщения или информации таким образом, что только авторизованные стороны могут получить к нему доступ, а те, кто не авторизован, не могут. Шифрование само по себе не предотвращает помехи, но запрещает понятное содержание потенциальному перехватчику.
Расшифровка – это процесс взятия зашифрованного или зашифрованного текста, или других данных и преобразования их обратно в текст, который вы или компьютер можете прочитать и понять. Этот термин может быть использован для описания метода расшифровки данных вручную или с помощью дешифрования данных с использованием надлежащих кодов или ключей.
Шифрование широко используется в Интернете для защиты пользовательской информации, передаваемой между браузером и сервером, включая пароли, платежную информацию и другую личную информацию, которую следует считать конфиденциальной. Организации и частные лица также обычно используют шифрование для защиты конфиденциальных данных, хранящихся на компьютерах, серверах и мобильных устройствах, таких как телефоны или планшеты.
Расширение PHP «Mcrypt»
Мы будем использовать расширение «Mcrypt» PHP для этой цели шифрования и дешифрования. Расширение mcrypt является интерфейсом библиотеки криптографии mcrypt.
Расширение mcrypt включено в PHP 5.4 до PHP 7.1. Он был удален из PHP 7.2 и перемещен в неофициальное расширение PECL, поскольку библиотека mcrypt больше не поддерживается.
<?php
$filename = "picture.png";
//encrypt file
encrypt_file($filename, "encrypted/".$filename,'secret-password');
//decrypt file
$decrypted = decrypt_file('encrypted/'.$filename,'secret');
header('Content-type:application/png');
fpassthru($decrypted);
function encrypt_file($file, $destination, $passphrase){
$handle = fopen($file, "rb") or die("could not open the file");
$contents = fread($handle,filesize($file));
fclose($handle);
$iv = substr(md5("x18x3Cx58".$passphrase,true),0,8);
$key = substr(md5("x2DxFCxD8".$passphrase,true).md5("x2DxFCxD8".$passphrase,true),0,24);
$opts = array('iv'=>$iv, 'key'=>$key);
$fp = fopen($destination,'wb') or die("Could not opn file for writing");
stream_filter_append($fp, 'mcrypt.tripledes',STREAM_FILTER_WRITE, $opts);
fwrite($fp, $contents) or die('Could not write to file');
fclose($fp);
}
function decrypt_file($file,$passphrase){
$iv = substr(md5("x18x3Cx58".$passphrase,true),0,8);
$key = substr(md5("x2DxFCxD8".$passphrase,true).md5("x2DxFCxD8".$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;
}Источник записи: https://thedebuggers.com