Phalcon 加密解密组件

30 篇文章 0 订阅

加密与解密(Encryption/Decryption)

Phalcon通过 Phalcon\Crypt 组件提供了加密和解密工具。这个类提供了对php mcrypt 的封装。默认情况下这个组件使用AES-256 (rijndael-256-cbc)。

基本使用

这个组件极易使用:

<?php

//Create an instance
$crypt = new Phalcon\Crypt();

$key = 'le password';
$text = 'This is a secret text';

$encrypted = $crypt->encrypt($text, $key);

echo $crypt->decrypt($encrypted, $key);

也可以使用同一实例加密多次:

<?php

//创建实例
$crypt = new Phalcon\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)

下面的选项可以改变加密的行为:

名称 描述
Cipher cipher是libmcrypt提供支持的一种加密算法。 查看这里 here
Mode libmcrypt支持的加密模式 (ecb, cbc, cfb, ofb)

例子:

<?php

//创建实例
$crypt = new Phalcon\Crypt();

//Use blowfish
$crypt->setCipher('blowfish');

$key = 'le password';
$text = 'This is a secret text';

echo $crypt->encrypt($text, $key);

提供 Base64(Base64 Support)

为了方便传输或显示我们可以对加密后的数据进行 base64 转码:

<?php

//创建实例
$crypt = new Phalcon\Crypt();

$key = 'le password';
$text = 'This is a secret text';

$encrypt = $crypt->encryptBase64($text, $key);

echo $crypt->decryptBase64($text, $key);

配置加密服务(Setting up an Encryption service)

你也可以把加密组件放入服务容器中这样我们可以在应用中的任何一个地方访问这个组件:

<?php

$di->set('crypt', function() {

    $crypt = new Phalcon\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!');
        }

    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值