Spec-Zone.ru › Phalcon 3

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

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

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

Вы должны использовать длину ключа, соответствующую текущему алгоритму. Для используемого по умолчанию алгоритма это 32 байта.

Основные принципы использования

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

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

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

use Phalcon\Crypt;

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

$texts = [
    "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);
}

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

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

Имя Описание
Шифр Шифр — это один из алгоритмов шифрования, поддерживаемых openssl. Список вы можете посмотреть здесь

Пример:

use Phalcon\Crypt;

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

// Use blowfish
$crypt->setCipher("bf-cbc");

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

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

Поддержка Base64

Для того, чтобы шифрование корректно передавалось (по почте) или отображалось (в браузере), обычно используется кодирование base64 для зашифрованных текстов:

use Phalcon\Crypt;

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

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

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

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

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

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

use Phalcon\Crypt;

$di->set(
    "crypt",
    function () {
        $crypt = new 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–2017 Phalcon Framework Team
Licensed under the Creative Commons Attribution License 3.0.
https://docs.phalconphp.com/en/latest/reference/crypt.html

Spec-Zone.ru

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