Идёт обновление сайта. Несколько дней возможны сбои в оформлении и переводах. Документация работает — если страница выглядит сломанной, обновите её позже.

Документация
L Laravel L intervention/image
Войти
Главная Laravel 10.x Шифрование

Шифрование

10.x 7 мар 2026 г.

#Введение

Сервисы шифрования Laravel предоставляют простой и удобный интерфейс для шифрования и расшифровки текста с помощью OpenSSL, используя шифры AES-256 и AES-128. Все зашифрованные значения Laravel подписываются с помощью кода аутентификации сообщения (MAC), чтобы их исходное значение нельзя было изменить или подделать после шифрования.

#Настройка

Перед использованием encrypter Laravel необходимо задать опцию конфигурации key в файле конфигурации config/app.php. Это значение конфигурации задаётся через переменную окружения APP_KEY. Рекомендуется использовать команду php artisan key:generate для генерации значения этой переменной, так как команда key:generate использует безопасный генератор случайных байтов PHP для создания криптографически стойкого ключа для вашего приложения. Обычно значение переменной окружения APP_KEY генерируется автоматически во время установки Laravel.

#Использование Encrypter

#Шифрование значения

Вы можете зашифровать значение с помощью метода 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) {
    // ...
}