Шифрование/Дешифрование
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