Документация Laravel 10.x
Здесь ты найдешь сниппеты по Laravel и полезные советы по веб-разработке.
Сервисы шифрования Laravel предоставляют простой и удобный интерфейс для шифрования и дешифрования текста с использованием OpenSSL и шифрования AES-256 и AES-128. Все зашифрованные значения Laravel подписаны кодом аутентификации сообщения (MAC), чтобы их базовое значение нельзя было изменить или подделать после шифрования.
Прежде чем использовать шифратор Laravel, вы должны установить опцию конфигурации key
в файле конфигурации config/app.php
. Это значение конфигурации управляется переменной среды APP_KEY
. Вы должны использовать команду php artisan key:generate
для генерации значения этой переменной, поскольку команда key:generate
использует криптографически безопасный генератор случайных байтов PHP для создания безопасного ключа для вашего приложения. Обычно значение переменной среды APP_KEY
будет сгенерировано для вас во время установки Laravel.
Вы можете зашифровать значение, используя метод encryptString
, предоставленный фасадом Crypt
. Все зашифрованные значения шифруются с использованием OpenSSL и шифра AES-256-CBC. Кроме того, все зашифрованные значения подписаны кодом аутентификации сообщения (MAC). Интегрированный код аутентификации сообщения предотвратит расшифровку значений, которые были изменены злонамеренными пользователями:
<?php namespace App\Http\Controllers; use Illuminate\Http\RedirectResponse;use Illuminate\Http\Request;use Illuminate\Support\Facades\Crypt; class DigitalOceanTokenController extends Controller{ /** * Сохранить токен API DigitalOcean для пользователя. */ public function store(Request $request): RedirectResponse { $request->user()->fill([ 'token' => Crypt::encryptString($request->token), ])->save(); return redirect('/secrets'); }}
Вы можете дешифровать значения с использованием метода decryptString
, предоставленного фасадом Crypt
. Если значение не может быть правильно дешифровано, например, когда код аутентификации сообщения недействителен, будет вызвано исключение Illuminate\Contracts\Encryption\DecryptException
:
use Illuminate\Contracts\Encryption\DecryptException;use Illuminate\Support\Facades\Crypt; try { $decrypted = Crypt::decryptString($encryptedValue);} catch (DecryptException $e) { // ...}