/** * @requires extension mcrypt */ public function testEncryptBase64() { $crypt = new \Phalcon\Crypt(); $crypt->setPadding(\Phalcon\Crypt::PADDING_ANSI_X_923); $key = substr('phalcon notice 13123123', 0, 16); $text = 'https://github.com/phalcon/cphalcon/issues?state=open'; $encrypted = $crypt->encryptBase64($text, substr($key, 0, 16)); $actual = $crypt->decryptBase64($encrypted, $key); $this->assertEquals($actual, $text); $encrypted = $crypt->encryptBase64($text, $key, TRUE); $actual = $crypt->decryptBase64($encrypted, $key, TRUE); $this->assertEquals($actual, $text); }
public function testPadding() { $texts = array(); $key = '0123456789ABCDEF0123456789ABCDEF'; $modes = array('ecb', 'cbc', 'cfb'); $pads = array(\Phalcon\Crypt::PADDING_ANSI_X_923, \Phalcon\Crypt::PADDING_PKCS7, \Phalcon\Crypt::PADDING_ISO_10126, \Phalcon\Crypt::PADDING_ISO_IEC_7816_4, \Phalcon\Crypt::PADDING_ZERO, \Phalcon\Crypt::PADDING_SPACE); for ($i = 1; $i < 128; ++$i) { $texts[] = str_repeat('A', $i); } $crypt = new \Phalcon\Crypt(); $crypt->setCipher(MCRYPT_RIJNDAEL_256)->setKey($key); foreach ($pads as $padding) { $crypt->setPadding($padding); foreach ($modes as $mode) { $crypt->setMode($mode); foreach ($texts as $text) { $encrypted = $crypt->encrypt($text); $actual = $crypt->decrypt($encrypted); $this->assertEquals($text, $actual); } } } }
/** * Set the crypt service * * @return void */ protected function crypt() { $config = $this->_config; $this->_di->set('crypt', function () use($config) { $crypt = new \Phalcon\Crypt(); $crypt->setKey($config->crypt->key); $crypt->setPadding(\Phalcon\Crypt::PADDING_ZERO); return $crypt; }); }
use Phalcon\DI\FactoryDefault, Phalcon\Mvc\View, Phalcon\Mvc\Url as UrlResolver, Phalcon\Mvc\Model\MetaData\Files as MetaDataFiles, Phalcon\Mvc\Model\MetaData\Memory as MetaDataMemory, Phalcon\Db\Adapter\Pdo\Mysql as DbAdapter, Phalcon\Events\Manager as EventsManager, Phalcon\Queue\Beanstalk, Phalcon\Logger, Phalcon\Logger\Adapter\File as FileLogger; /** * The FactoryDefault Dependency Injector automatically register the right services providing a full stack framework */ $di = new FactoryDefault(); //inject config $di->set('config', $config, true); /** * set crypt, 在cookies使用时候可以进行加密 */ $di->set('crypt', function () { $crypt = new Phalcon\Crypt(); /** * 别用PADDING_DEFAULT影响cookies的取值 */ $crypt->setPadding(\Phalcon\Crypt::PADDING_ZERO); $crypt->setKey('?.aX/^~j1V$#1dj7'); // crypt string 必须为 16 , 24 ,32 三种长度 return $crypt; }); /** * 设置cookies和加密模式 */ $di->setShared('cookies', function () { $cookies = new Phalcon\Http\Response\Cookies(); // $cookies->useEncryption(false); //如果为true则使用下面的crypt加密 , 如果使用加密那速度非常慢 return $cookies; }); /** * The URL component is used to generate all kind of urls in the application */