РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
691 of 1392 menu

Исключение DecryptException

Исключение DecryptException выбрасывается компонентом шифрования Laravel, когда не удаётся расшифровать данные. Это может произойти при использовании неверного ключа шифрования, изменении ключа после шифрования данных, повреждении зашифрованной строки или при попытке расшифровать данные, зашифрованные другой системой с другим ключом. Обработка этого исключения важна для корректной работы приложения при работе с конфиденциальными данными.

Синтаксис

Исключение DecryptException находится в пространстве имён Illuminate\Contracts\Encryption\DecryptException. Оно наследуется от базового класса RuntimeException и автоматически выбрасывается методами фасада Crypt или хелпером decrypt при неудачной расшифровке.

<?php use Illuminate\Contracts\Encryption\DecryptException; try { $decrypted = decrypt($encryptedValue); } catch (DecryptException $e) { // Handle decryption failure } ?>

Пример

Попробуем расшифровать данные с неверным ключом:

<?php namespace App\Http\Controllers; use Illuminate\Contracts\Encryption\DecryptException; use Illuminate\Support\Facades\Crypt; class DecryptController extends Controller { public function testDecrypt() { $encrypted = Crypt::encryptString('secret data'); // Simulate key mismatch config(['app.key' => 'base64:wrongkey1234567890=']); try { $decrypted = Crypt::decryptString($encrypted); echo "Decrypted: " . $decrypted; } catch (DecryptException $e) { echo "Decryption failed: " . $e->getMessage(); } } } ?>

Результат выполнения кода:

"Decryption failed: The payload is invalid."

Пример

Обработаем исключение при расшифровке данных из базы данных:

<?php namespace App\Http\Controllers; use App\Models\User; use Illuminate\Contracts\Encryption\DecryptException; use Illuminate\Support\Facades\Crypt; class UserController extends Controller { public function showSecret($id) { $user = User::find($id); try { $secret = Crypt::decryptString($user->secret_field); echo "User secret: " . $secret; } catch (DecryptException $e) { echo "Unable to decrypt user data. Please contact support."; } } } ?>

Результат выполнения кода при успешной расшифровке:

"User secret: password123"

Результат выполнения кода при ошибке расшифровки:

"Unable to decrypt user data. Please contact support."

Пример

Используем глобальный обработчик исключений для всех DecryptException в приложении:

<?php namespace App\Exceptions; use Illuminate\Contracts\Encryption\DecryptException; use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler; use Throwable; class Handler extends ExceptionHandler { public function render($request, Throwable $e) { if ($e instanceof DecryptException) { return response()->view('errors.decrypt', [ 'message' => 'Decryption error occurred' ], 500); } return parent::render($request, $e); } } ?>

Смотрите также

  • исключение ValidationException,
    которое возникает при ошибках валидации данных
  • исключение QueryException,
    которое возникает при ошибках выполнения SQL-запросов
  • исключение AuthenticationException,
    которое возникает при ошибках аутентификации
  • класс Handler,
    который управляет обработкой всех исключений в приложении
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить