发布于 2015-08-21 15:27:41 | 631 次阅读 | 评论: 0 | 来源: 网络整理
Phalcon通过 PhalconCrypt 组件提供了加密和解密工具。这个类提供了对PHP mcrypt 的封装。
默认情况下这个组件使用AES-256 (rijndael-256-cbc)。
这个组件极易使用:
<?php
use PhalconCrypt;
// 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);
也可以使用同一实例加密多次:
<?php
use PhalconCrypt;
// 创建实例
$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);
}
下面的选项可以改变加密的行为:
名称 | 描述 |
---|---|
Cipher | cipher是libmcrypt提供支持的一种加密算法。 查看这里 here |
Mode | libmcrypt支持的加密模式 (ecb, cbc, cfb, ofb) |
例子:
<?php
use PhalconCrypt;
// 创建实例
$crypt = new Crypt();
// 使用 blowfish
$crypt->setCipher('blowfish');
$key = 'le password';
$text = 'This is a secret text';
echo $crypt->encrypt($text, $key);
为了方便传输或显示我们可以对加密后的数据进行 base64 转码:
<?php
use PhalconCrypt;
// 创建实例
$crypt = new Crypt();
$key = 'le password';
$text = 'This is a secret text';
$encrypt = $crypt->encryptBase64($text, $key);
echo $crypt->decryptBase64($encrypt, $key);
你也可以把加密组件放入服务容器中这样我们可以在应用中的任何一个地方访问这个组件:
<?php
use PhalconCrypt;
$di->set('crypt', function () {
$crypt = new Crypt();
// 设置全局加密密钥
$crypt->setKey('%31.1e$i86e$f!8jz');
return $crypt;
}, true);
然后,例如,我们可以在控制器中使用它了:
<?php
use PhalconMvcController;
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!');
}
}
}