dtsjq28482 2012-12-22 19:04
浏览 125
已采纳

PHP MCRYPT不断抛出模块初始化失败警告

Every time I try to run m_decrypt, I have the following error thrown:

Warning: mcrypt_get_key_size(): Module initialization failed in /var/www/milo/system/encryption/common.php on line 51 Warning: mcrypt_get_block_size(): Module initialization failed in /var/www/milo/system/encryption/common.php on line 54 Warning: mcrypt_decrypt(): Module initialization failed in /var/www/milo/system/encryption/common.php on line 55  

Below is the Code that drives it all:

class encrpt
{
    protected $data;
    protected $key = "JUST A KEY";
    protected $cipher = "MCRYPT_SERPENT_256";
    protected $mode = "MCRYPT_MODE_CBC";

    public function m_encrypt($data)
    {
        return (string) 
         base64_encode(
          mcrypt_encrypt(
           $this->cipher,
           substr(md5($this->key),0,mcrypt_get_key_size($this->cipher, $this->mode)),
           $data,
           $this->mode,
           substr(md5($this->key),0,mcrypt_get_block_size($this->cipher, $this->mode))
          )
         );
    }

    public function m_decrypt($data)
    {
        return (string)
          mcrypt_decrypt(
           $this->cipher,
           substr(md5($this->key),0,mcrypt_get_key_size($this->cipher, $this->mode)),
           base64_decode($data),
           $this->mode,
           substr(md5($this->key),0,mcrypt_get_block_size($this->cipher, $this->mode))
          );
    }
}

I don't know what I am missing. Is my php-mcrypt module broken or missing dependencies? I am runnning on PHP 5.3

  • 写回答

2条回答 默认 最新

  • dongyi1429 2012-12-22 19:26
    关注

    Ok solved it. I was putting in the constants wrong. I changed around my class's variables as such:

    protected $cipher = "rijndael-256";
    protected $mode = "cbc";
    

    Hope this helps people down the road from not bashing their brain in!!

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?