php 7.3, не работает функция mcrypt_get_iv_size

у меня есть данный код

class Security
{
    // default encryption key when not specified
    const DEFAULT_ENCRYPTION_KEY = '~s@1v@g3d@t@t@t!';

    public static function encrypt($data,$key = self::DEFAULT_ENCRYPTION_KEY)
    {
        $key = self::DEFAULT_ENCRYPTION_KEY;
        $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
        $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
        $encrypted = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $data, MCRYPT_MODE_ECB, $iv);
        return trim(base64_encode($encrypted));
    }

    public static function decrypt($data,$key = self::DEFAULT_ENCRYPTION_KEY)
    {
        $key = self::DEFAULT_ENCRYPTION_KEY;
        $encrypted = base64_decode($data);
        $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
        $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
        $decrypted = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key, $encrypted, MCRYPT_MODE_ECB, $iv);
        return trim($decrypted);
    }

}

но этот код не работает на ферсии 7.3, но работает на версии 7.1

как переделать код, чтобы он работал на версии 7.3?

ошибка которую я получаю Call to undefined function mcrypt_get_iv_size()


Ответы (1 шт):

Автор решения: Yaroslav Molchan

Скорее всего не установлен модуль mcrypt для 7.3, а для 7.1 установлен.

На примере Ubuntu установить можно попробовать так:

sudo apt-get -y install gcc make autoconf libc-dev pkg-config
sudo apt-get -y install libmcrypt-dev
sudo pecl install mcrypt-1.0.1

И потом создать файл /etc/php/7.3/cli/conf.d/mcrypt.ini и прописать в нём: extension=/usr/lib/php/.../mcrypt.so (заменить на ваш)

Аналогично для другой OS ищите как установить этот модуль.

→ Ссылка