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