mcrypt_module_open - функция объявлена УСТАРЕВШЕЙ, начиная с PHP 7.1.0. Использовать эту функции крайне не рекомендуется.
Существует масса способов шифрования на PHP. Я покажу какой способ использую в своих проектах на Joomla. Допустим у нас есть какойто компонент в котором надо зашифровать ссылку или имя файла. Добавим в файл хелпера helpers/mycomp.php
следующий код.
/**
* Функции для шифрования строк по ключу
*/
function __encode($text, $key)
{
$td = mcrypt_module_open ("tripledes", '', 'cfb', '');
$iv = mcrypt_create_iv (mcrypt_enc_get_iv_size ($td), MCRYPT_RAND);
if (mcrypt_generic_init ($td, $key, $iv) != -1)
{
$enc_text=base64_encode(mcrypt_generic ($td,$iv.$text));
mcrypt_generic_deinit ($td);
mcrypt_module_close ($td);
return $enc_text;
}
}
function strToHex($string)
{
$hex='';
for ($i=0; $i < strlen($string); $i++)
{
$hex .= dechex(ord($string[$i]));
}
return $hex;
}
function __decode($text, $key)
{
$td = mcrypt_module_open ("tripledes", '', 'cfb', '');
$iv_size = mcrypt_enc_get_iv_size ($td);
$iv = mcrypt_create_iv (mcrypt_enc_get_iv_size ($td), MCRYPT_RAND);
if (mcrypt_generic_init ($td, $key, $iv) != -1) {
$decode_text = substr(mdecrypt_generic ($td, base64_decode($text)),$iv_size);
mcrypt_generic_deinit ($td);
mcrypt_module_close ($td);
return $decode_text;
}
}
public function hexToStr($hex)
{
$string='';
for ($i=0; $i < strlen($hex)-1; $i+=2)
{
$string .= chr(hexdec($hex[$i].$hex[$i+1]));
}
return $string;
}
/* END */
Теперь чтоб зашифровать строку в файле /views/myviews/tmpl/default.php
//Зашифровать
$val = 'my_file.jpg';
$code = MycompSiteHelper::strToHex(MycompSiteHelper::__encode($val, 'your key'));
Допустим наша строка это некие значения передающиеся в контролер компонента mycomp для выполнения задачи скачивания файла. Например: /index.php?option=com_mycomp&task=download&id=<?php echo $code; ?>
A в модели расшифровываем ID и отдаем файл.
// Расшифровать
$val = MycompSiteHelper::__decode(MycompSiteHelper::hexToStr($code), 'your key');
Если по какой то причине у вас не подключен файл хелпер, его можно подключить так
if(!class_exists('MycompSiteHelper')) require_once(JPATH_COMPONENT.'/helpers/mycomp.php');
В качестве ключа можно использовать динамический ключ, например дату. Таким образом мы получим ссылку на файл которая меняется каждые сутки!
Удачи!!!