Encryption/Decryption ===================== Phalcon通过 :doc:`Phalcon\\Crypt <../api/Phalcon_Crypt>` 组件提供了加密和解密工具。这个类提供了对PHP mcrypt_ 的封装。 默认情况下这个组件使用AES-256 (rijndael-256-cbc)。 基本使用 -------- 这个组件极易使用: .. code-block:: php encrypt($text, $key); echo $crypt->decrypt($encrypted, $key); 也可以使用同一实例加密多次: .. code-block:: php 'This is a secret text', 'other-key' => 'This is a very secret' ); foreach ($texts as $key => $text) { // 加密 $encrypted = $crypt->encrypt($text, $key); // 解密 echo $crypt->decrypt($encrypted, $key); } 加密选项(Encryption Options) ------------------------------ 下面的选项可以改变加密的行为: +------------+------------------------------------------------------------------+ | 名称 | 描述 | +============+==================================================================+ | Cipher | cipher是libmcrypt提供支持的一种加密算法。 查看这里 here_ | +------------+------------------------------------------------------------------+ | Mode | libmcrypt支持的加密模式 (ecb, cbc, cfb, ofb) | +------------+------------------------------------------------------------------+ 例子: .. code-block:: php setCipher('blowfish'); $key = 'le password'; $text = 'This is a secret text'; echo $crypt->encrypt($text, $key); 提供 Base64(Base64 Support) ----------------------------- 为了方便传输或显示我们可以对加密后的数据进行 base64_ 转码: .. code-block:: php encryptBase64($text, $key); echo $crypt->decryptBase64($encrypt, $key); 配置加密服务(Setting up an Encryption service) ------------------------------------------------ 你也可以把加密组件放入服务容器中这样我们可以在应用中的任何一个地方访问这个组件: .. code-block:: php set('crypt', function () { $crypt = new Crypt(); // 设置全局加密密钥 $crypt->setKey('%31.1e$i86e$f!8jz'); return $crypt; }, true); 然后,例如,我们可以在控制器中使用它了: .. code-block:: php request->getPost('text'); $secret->content = $this->crypt->encrypt($text); if ($secret->save()) { $this->flash->success('Secret was successfully created!'); } } } .. _mcrypt: http://www.php.net/manual/en/book.mcrypt.php .. _here: http://www.php.net/manual/en/mcrypt.ciphers.php .. _base64: http://www.php.net/manual/en/function.base64-encode.php