多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# Encryption/Decryption # Encryption/Decryption Phalcon通过 [*Phalcon\\Crypt*](#) 组件提供了加密和解密工具。这个类提供了对PHP [mcrypt](http://www.php.net/manual/en/book.mcrypt.php) 的封装。 默认情况下这个组件使用AES-256 (rijndael-256-cbc)。 ### 基本使用 这个组件极易使用: ``` <pre class="calibre14">``` <?php use Phalcon\Crypt; // Create an instance $crypt = new Crypt(); $key = 'le password'; $text = 'This is a secret text'; $encrypted = $crypt->encrypt($text, $key); echo $crypt->decrypt($encrypted, $key); ``` ``` 也可以使用同一实例加密多次: ``` <pre class="calibre14">``` <?php use Phalcon\Crypt; // 创建实例 $crypt = new Crypt(); $texts = array( 'my-key' => '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) 下面的选项可以改变加密的行为: 名称描述Ciphercipher是libmcrypt提供支持的一种加密算法。 查看这里 [here](http://www.php.net/manual/en/mcrypt.ciphers.php)Modelibmcrypt支持的加密模式 (ecb, cbc, cfb, ofb)例子: ``` <pre class="calibre14">``` <?php use Phalcon\Crypt; // 创建实例 $crypt = new Crypt(); // 使用 blowfish $crypt->setCipher('blowfish'); $key = 'le password'; $text = 'This is a secret text'; echo $crypt->encrypt($text, $key); ``` ``` ### 提供 Base64(Base64 Support) 为了方便传输或显示我们可以对加密后的数据进行 [base64](http://www.php.net/manual/en/function.base64-encode.php) 转码: ``` <pre class="calibre14">``` <?php use Phalcon\Crypt; // 创建实例 $crypt = new Crypt(); $key = 'le password'; $text = 'This is a secret text'; $encrypt = $crypt->encryptBase64($text, $key); echo $crypt->decryptBase64($encrypt, $key); ``` ``` ### 配置加密服务(Setting up an Encryption service) 你也可以把加密组件放入服务容器中这样我们可以在应用中的任何一个地方访问这个组件: ``` <pre class="calibre14">``` <?php use Phalcon\Crypt; $di->set('crypt', function () { $crypt = new Crypt(); // 设置全局加密密钥 $crypt->setKey('%31.1e$i86e$f!8jz'); return $crypt; }, true); ``` ``` 然后,例如,我们可以在控制器中使用它了: ``` <pre class="calibre14">``` <?php use Phalcon\Mvc\Controller; class SecretsController extends Controller { public function saveAction() { $secret = new Secrets(); $text = $this->request->getPost('text'); $secret->content = $this->crypt->encrypt($text); if ($secret->save()) { $this->flash->success('Secret was successfully created!'); } } } ``` ``` | - [索引](# "总目录") - [下一页](# "访问控制列表 ACL(Access Control Lists ACL)") | - [上一页](# "安全(Security)") |