Spec-Zone.ru › Phalcon 2

Шифрование/Дешифрование

Phalcon предоставляет средства шифрования через компонент Phalcon\Crypt. Этот класс предлагает простые объектно-ориентированные оболочки для библиотеки шифрования mcrypt PHP.

По умолчанию этот компонент обеспечивает безопасное шифрование с использованием AES-256 (rijndael-256-cbc).

Основное использование

Этот компонент предназначен для очень простого использования:

//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);

Вы можете использовать тот же экземпляр для шифрования/дешифрования несколько раз:

//Create an instance
$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) {

    //Perform the encryption
    $encrypted = $crypt->encrypt($text, $key);

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

Параметры шифрования

Доступны следующие параметры для изменения поведения шифрования:

ИмяОписание
ШифрШифр — это один из алгоритмов шифрования, поддерживаемых libmcrypt. Список можно посмотреть здесь
РежимОдин из режимов шифрования, поддерживаемых libmcrypt (ecb, cbc, cfb, ofb)

Пример:

//Create an instance
$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 для зашифрованных текстов:

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

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

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

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

Настройка службы шифрования

Вы можете настроить компонент шифрования в контейнере служб, чтобы использовать его из любой части приложения:

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

    $crypt = new Phalcon\Crypt();

    //Set a global encryption key
    $crypt->setKey('%31.1e$i86e$f!8jz');

    return $crypt;
}, true);

Затем, например, в контроллере вы можете использовать его следующим образом:

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!');
        }

    }

}

© 2011–2016 Phalcon Framework Team
Licensed under the Creative Commons Attribution License 3.0.
https://docs.phalconphp.com/en/2.0.0/reference/crypt.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API