# Encryption/Decryption
Phalcon通过[Phalcon\\Crypt](http://docs.iphalcon.cn/api/Phalcon_Crypt.html)组件提供了加密和解密工具。这个类提供了对PHP[openssl](http://www.php.net/manual/en/book.openssl.php)的封装。
默认情况下这个组件使用AES-256-CFB。
> You must use a key length corresponding to the current algorithm. For the algorithm used by default it is 32 bytes.
## 基本使用
这个组件极易使用:
~~~
<?php
use Phalcon\Crypt;
// Create an instance
$crypt = new Crypt();
$key = "This is a secret key (32 bytes).";
$text = "This is the text that you want to encrypt.";
$encrypted = $crypt->encrypt($text, $key);
echo $crypt->decrypt($encrypted, $key);
~~~
也可以使用同一实例加密多次:
~~~
<?php
use Phalcon\Crypt;
// 创建实例
$crypt = new Crypt();
$texts = [
"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)
下面的选项可以改变加密的行为:
| 名称 | 描述 |
| --- | --- |
| Cipher | cipher是libmcrypt提供支持的一种加密算法。 查看这里[here](http://www.php.net/manual/en/function.openssl-get-cipher-methods.php) |
例子:
~~~
<?php
use Phalcon\Crypt;
// 创建实例
$crypt = new Crypt();
// 使用 blowfish
$crypt->setCipher("bf-cbc");
$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)转码:
~~~
<?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)
你也可以把加密组件放入服务容器中这样我们可以在应用中的任何一个地方访问这个组件:
~~~
<?php
use Phalcon\Crypt;
$di->set(
'crypt',
function () {
$crypt = new Crypt();
// 设置全局加密密钥
$crypt->setKey(
"%31.1e$i86e$f!8jz"
);
return $crypt;
},
true
);
~~~
然后,例如,我们可以在控制器中使用它了:
~~~
<?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!"
);
}
}
}
~~~
- 简介
- 安装
- 安装(installlation)
- XAMPP下的安装
- WAMP下安装
- Nginx安装说明
- Apache安装说明
- Cherokee 安装说明
- 使用 PHP 内置 web 服务器
- Phalcon 开发工具
- Linux 系统下使用 Phalcon 开发工具
- Mac OS X 系统下使用 Phalcon 开发工具
- Windows 系统下使用 Phalcon 开发工具
- 教程
- 教程 1:让我们通过例子来学习
- 教程 2:INVO简介
- 教程 3: 保护INVO
- 教程4: 使用CRUD
- 教程5: 定制INVO
- 教程 6: Vökuró
- 教程 7:创建简单的 REST API
- 组件
- 依赖注入与服务定位器
- MVC架构
- 使用控制器
- 使用模型
- 模型关系
- 事件与事件管理器
- Behaviors
- 模型元数据
- 事务管理
- 验证数据完整性
- Workingwith Models
- Phalcon查询语言
- 缓存对象关系映射
- 对象文档映射 ODM
- 使用视图
- 视图助手
- 资源文件管理
- Volt 模版引擎
- MVC 应用
- 路由
- 调度控制器
- Micro Applications
- 使用命名空间
- 事件管理器
- Request Environmen
- 返回响应
- Cookie 管理
- 生成 URL 和 路径
- 闪存消息
- 使用 Session 存储数据
- 过滤与清理
- 上下文编码
- 验证Validation
- 表单_Forms
- 读取配置
- 分页 Pagination
- 使用缓存提高性能
- 安全
- 加密与解密 Encryption/Decryption
- 访问控制列表
- 多语言支持
- 类加载器 Class Autoloader
- 日志记录_Logging
- 注释解析器 Annotations Parser
- 命令行应用 Command Line Applications
- Images
- 队列 Queueing
- 数据库抽象层
- 国际化
- 数据库迁移
- 调试应用程序
- 单元测试
- 进阶技巧与延伸阅读
- 提高性能:下一步该做什么?
- Dependency Injection Explained
- Understanding How Phalcon Applications Work
- Api
- Abstract class Phalcon\Acl