public static function Encrypt($params) { $config = Zend_Registry::get("__CONFIG__"); $key = isset($config['mcrypt']['key']) ? $config['mcrypt']['key'] : self::$key; $vector = isset($config['mcrypt']['vector']) ? $config['mcrypt']['vector'] : self::$vector; $expire = isset($config['mcrypt']['expire']) ? $config['mcrypt']['expire'] : self::$expire; $configMCrypt = array('adapter' => 'mcrypt', 'key' => $key, 'vector' => $vector); if (is_string($params)) { $params = array("param" => $params); } if (!array_key_exists("expire", $params)) { $nextTime = mktime(Date('H') + $expire, Date('i'), 0, Date('m'), Date('d'), Date('Y')); $params["expire"] = $nextTime; } /** @var $filter Zend_Filter_Encrypt */ $filter = new Zend_Filter_Encrypt($configMCrypt); /** json is smaller than serialize */ $json = Zend_Json::encode($params); $encrypted = $filter->filter($json); return strtr(base64_encode($encrypted), '+/=', '-_,'); }
/** * Defined by Zend_Filter_Interface * * Encrypts the file $value with the defined settings * * @param string $value Full path of file to change * @return string The filename which has been set, or false when there were errors */ public function filter($value) { if (!file_exists($value)) { throw new Zend_Filter_Exception("File '{$value}' not found"); } if (!isset($this->_filename)) { $this->_filename = $value; } if (file_exists($this->_filename) and !is_writable($this->_filename)) { throw new Zend_Filter_Exception("File '{$this->_filename}' is not writable"); } $content = file_get_contents($value); if (!$content) { throw new Zend_Filter_Exception("Problem while reading file '{$value}'"); } $encrypted = parent::filter($content); $result = file_put_contents($this->_filename, $encrypted); if (!$result) { throw new Zend_Filter_Exception("Problem while writing file '{$this->_filename}'"); } return $this->_filename; }
/** * @return void */ public function testCallingUnknownMethod() { if (!extension_loaded('mcrypt')) { $this->markTestSkipped('Mcrypt extension not installed'); } $filter = new Zend_Filter_Encrypt(); try { $filter->getUnknownMethod(); $this->fail('Exception expected on calling a non existing method'); } catch (Zend_Filter_Exception $e) { $this->assertContains('Unknown method', $e->getMessage()); } }
/** * Ensures that the filter allows de/encryption * * @return void */ public function testEncryptionWithDecryptionOpenssl() { if (!extension_loaded('openssl')) { $this->markTestSkipped('Openssl extension not installed'); } $filter = new Zend_Filter_Encrypt(array('adapter' => 'Openssl')); $filter->setPublicKey(dirname(__FILE__) . '/_files/publickey.pem'); $output = $filter->filter('teststring'); $envelopekeys = $filter->getEnvelopeKey(); $this->assertNotEquals('teststring', $output); $filter = new Zend_Filter_Decrypt(array('adapter' => 'Openssl')); $filter->setPassphrase('zPUp9mCzIrM7xQOEnPJZiDkBwPBV9UlITY0Xd3v4bfIwzJ12yPQCAkcR5BsePGVw RK6GS5RwXSLrJu9Qj8+fk0wPj6IPY5HvA9Dgwh+dptPlXppeBm3JZJ+92l0DqR2M ccL43V3Z4JN9OXRAfGWXyrBJNmwURkq7a2EyFElBBWK03OLYVMevQyRJcMKY0ai+ tmnFUSkH2zwnkXQfPUxg9aV7TmGQv/3TkK1SziyDyNm7GwtyIlfcigCCRz3uc77U Izcez5wgmkpNElg/D7/VCd9E+grTfPYNmuTVccGOes+n8ISJJdW0vYX1xwWv5l bK22CwD/l7SMBOz4M9XH0Jb0OhNxLza4XMDu0ANMIpnkn1KOcmQ4gB8fmAbBt'); $filter->setPrivateKey(dirname(__FILE__) . '/_files/privatekey.pem'); $filter->setEnvelopeKey($envelopekeys); $input = $filter->filter($output); $this->assertEquals('teststring', trim($input)); }
/** * Encrypt url for password recovery * * @param Object $user * @return String **/ private function encryptUrl($user) { if (!is_object($user)) { throw new Exception('User is not object'); } $encrypt = new Zend_Filter_Encrypt(); $encrypt->setVector(MAIL_VECTOR); $hash = $encrypt->filter("id/{$user->id}/date/" . date('Y-m-d')); return $this->view->serverUrl() . $this->view->baseUrl() . "/forgot/recovery?key=" . urlencode(base64_encode($hash)); }