$size) { $config['key'] = substr($config['key'], 0, $size); } $config['iv_size'] = mcrypt_get_iv_size($config['cipher'], $config['mode']); $this->config = $config; Kohana::log('debug', 'Encrypt Library initialized'); } public function encode($data) { if (Encrypt::$rand === NULL) { if (KOHANA_IS_WIN) { Encrypt::$rand = MCRYPT_RAND; } else { if (defined('MCRYPT_DEV_URANDOM')) { Encrypt::$rand = MCRYPT_DEV_URANDOM; } elseif (defined('MCRYPT_DEV_RANDOM')) { Encrypt::$rand = MCRYPT_DEV_RANDOM; } else { Encrypt::$rand = MCRYPT_RAND; } } } if (Encrypt::$rand === MCRYPT_RAND) { mt_srand(); } $iv = mcrypt_create_iv($this->config['iv_size'], Encrypt::$rand); $data = mcrypt_encrypt($this->config['cipher'], $this->config['key'], $data, $this->config['mode'], $iv); return base64_encode($iv.$data); } public function decode($data) { $data = base64_decode($data); $iv = substr($data, 0, $this->config['iv_size']); $data = substr($data, $this->config['iv_size']); return rtrim(mcrypt_decrypt($this->config['cipher'], $this->config['key'], $data, $this->config['mode'], $iv), "\0"); } }