Laravel - Verschlüsselung

Bei der Verschlüsselung wird ein einfacher Text mithilfe einiger Algorithmen in eine Nachricht konvertiert, sodass kein dritter Benutzer die Informationen lesen kann. Dies ist hilfreich für die Übertragung vertraulicher Informationen, da ein Eindringling weniger Chancen hat, auf die übertragenen Informationen abzuzielen.

Die Verschlüsselung erfolgt mit einem Prozess namens Cryptography. Der zu verschlüsselnde Text wird als bezeichnetPlain Text und der Text oder die Nachricht, die nach der Verschlüsselung erhalten wird, wird aufgerufen Cipher Text. Der Prozess der Konvertierung von Chiffretext in Klartext wird aufgerufenDecryption.

Laravel benutzt AES-256 und AES-128Verschlüsselung, die Open SSL zur Verschlüsselung verwendet. Alle in Laravel enthaltenen Werte werden mit dem Protokoll signiertMessage Authentication Code Damit kann der zugrunde liegende Wert nach der Verschlüsselung nicht mehr manipuliert werden.

Aufbau

Der Befehl zum Generieren des key in Laravel ist unten gezeigt -

php artisan key:generate

Bitte beachten Sie, dass dieser Befehl den PHP-Generator für sichere Zufallsbytes verwendet und Sie die Ausgabe wie im folgenden Screenshot sehen können -

Der oben angegebene Befehl hilft beim Generieren des Schlüssels, der in Webanwendungen verwendet werden kann. Beachten Sie den unten gezeigten Screenshot -

Hinweis

Die Werte für die Verschlüsselung sind in der korrekt ausgerichtet config/app.php Datei, die nämlich zwei Parameter für die Verschlüsselung enthält key und cipher. Wenn der Wert, der diesen Schlüssel verwendet, nicht richtig ausgerichtet ist, sind alle in Laravel verschlüsselten Werte unsicher.

Verschlüsselungsprozess

Die Verschlüsselung eines Wertes kann mit dem erfolgen encrypt helperin den Controllern der Laravel-Klasse. Diese Werte werden mit OpenSSL- und AES-256-Verschlüsselung verschlüsselt. Alle verschlüsselten Werte werden mit dem Nachrichtenauthentifizierungscode (MAC) signiert, um nach Änderungen an der verschlüsselten Zeichenfolge zu suchen.

Der unten gezeigte Code wird in einem Controller erwähnt und zum Speichern einer geheimen oder vertraulichen Nachricht verwendet.

<?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();
   }
}

Entschlüsselungsprozess

Die Entschlüsselung der Werte erfolgt mit dem decrypt helper. Beachten Sie die folgenden Codezeilen -

use Illuminate\Contracts\Encryption\DecryptException;

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

Bitte beachten Sie, dass eine entsprechende Ausnahme ausgelöst wird, wenn der Entschlüsselungsprozess aufgrund der Verwendung eines ungültigen MAC nicht erfolgreich ist.