Skip to content
Icon

ПРЕДУПРЕЖДЕНИЕ Вы просматриваете документацию к старой версии Laravel. Рассмотрите возможность обновления Вашего проекта до Laravel 9.x.

Шифрование

Введение

Службы шифрования 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 App\Http\Controllers\Controller;
use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Crypt;
 
class DigitalOceanTokenController extends Controller
{
/**
* Store a DigitalOcean API token for the user.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function storeSecret(Request $request)
{
$request->user()->fill([
'token' => Crypt::encryptString($request->token),
])->save();
}
}

Расшифровка значения

Вы можете расшифровать значения, используя метод decryptString, предоставляемый фасадом Crypt. Если значение не может быть правильно расшифровано, например, когда код аутентификации сообщения недействителен, будет выдано исключение Illuminate\Contracts\Encryption\DecryptException:

use Illuminate\Contracts\Encryption\DecryptException;
use Illuminate\Support\Facades\Crypt;
 
try {
$decrypted = Crypt::decryptString($encryptedValue);
} catch (DecryptException $e) {
//
}