web-dev-qa-db-fra.com

La fonction mcrypt_create_iv () est obsolète dans le cadre CodeIgniter

<?php 
class Encryption {
    var $skey     = "1234561234561234"; // you can change it

    public  function safe_b64encode($string) {

        $data = base64_encode($string);
        $data = str_replace(array('+','/','='),array('-','_',''),$data);
        return $data;
    }

    public function safe_b64decode($string) {
        $data = str_replace(array('-','_'),array('+','/'),$string);
        $mod4 = strlen($data) % 4;
        if ($mod4) {
            $data .= substr('====', $mod4);
        }
        return base64_decode($data);
    }

    public  function encode($value){ 

        if(!$value){return false;}
        $text = $value;
        $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
        $iv = mcrypt_create_iv($iv_size, MCRYPT_Rand);
        $crypttext = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $this->skey, $text, MCRYPT_MODE_ECB, $iv);
        return trim($this->safe_b64encode($crypttext)); 
    }

    public function decode($value){

        if(!$value){return false;}
        $crypttext = $this->safe_b64decode($value); 
        $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
        $iv = mcrypt_create_iv($iv_size, MCRYPT_Rand);
        $decrypttext = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $this->skey, $crypttext, MCRYPT_MODE_ECB, $iv);
        return trim($decrypttext);
    }

}

C'est mon fichier encryption.php. J'ai essayé de résoudre cette erreur et de rechercher beaucoup de temps, mais je ne trouvais pas de réponse adéquate. Je suis plus récent en PHP.

Erreur :

Une erreur PHP a été rencontrée

Gravité: 8192

Message: La fonction mcrypt_create_iv () est obsolète

Nom de fichier: libraries/Encryption.php

Numéro de ligne: 27

2
prakash pokhrel

Le manuel http://php.net/manual/en/function.mcrypt-create-iv.php déclare:

Attention

Cette fonction a été détruite dans PHP 7.1.0 et supprimée dans PHP 7.2.0. 

Les alternatives à cette fonction incluent:

Il existe une autre solution si vous ne souhaitez pas utiliser random_bytes() , et elle est montrée ici:

8
Funk Forty Niner