Учебники

Laravel — Шифрование

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

Шифрование выполняется с использованием процесса, называемого Криптография . Текст, который должен быть зашифрован, называется простым текстом, а текст или сообщение, полученное после шифрования, называется шифрованным текстом . Процесс преобразования зашифрованного текста в обычный текст называется расшифровкой .

Laravel использует шифратор AES-256 и AES-128 , который использует Open SSL для шифрования. Все значения, включенные в Laravel, подписаны с использованием протокольного кода аутентификации сообщений, поэтому базовое значение не может быть подделано после его шифрования.

конфигурация

Команда, использованная для генерации ключа в Laravel, показана ниже —

php artisan key:generate

Обратите внимание, что эта команда использует генератор безопасных случайных байтов PHP, и вы можете увидеть результат, как показано на скриншоте ниже —

Ключ Ремесленника

Приведенная выше команда помогает в создании ключа, который можно использовать в веб-приложении. Посмотрите на скриншот, показанный ниже.

Заметка

Значения для шифрования должным образом выровнены в файле config / app.php , который включает в себя два параметра для шифрования, а именно ключ и шифр . Если значение, использующее этот ключ, не выровнено должным образом, все значения, зашифрованные в Laravel, будут небезопасными.

Процесс шифрования

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

defaultCommand

Показанный ниже код упоминается в контроллере и используется для хранения секретного или конфиденциального сообщения.

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;

class DemoController extends Controller{
   **
      * Store a secret message for the user.
      *
      * @param Request $request
      * @param int $id
      * @return Response
   */
   
   public function storeSecret(Request $request, $id) {
      $user = User::findOrFail($id);
      $user->fill([
         'secret' => encrypt($request->secret)
      ])->save();
   }
}

Процесс дешифрования

Расшифровка значений выполняется с помощью помощника расшифровки . Соблюдайте следующие строки кода —

use Illuminate\Contracts\Encryption\DecryptException;

// Exception for decryption thrown in facade
try {
   $decrypted = decrypt($encryptedValue);
} catch (DecryptException $e) {
   //
}

Обратите внимание, что если процесс расшифровки не был успешным из-за использования недопустимого MAC-адреса, выдается соответствующее исключение.