Verschlüsselung und Entschlüsselung


Verschlüsselungs- und Entschlüsselungsmechanismus

    Einführung
  • Einstellungen
  • Nutzung

Einführung

Laravel Der Verschlüsselungsmechanismus verwendet die von OpenSSL bereitgestellte AES-256- und AES-128-Verschlüsselung. Es wird dringend empfohlen, die integrierten Verschlüsselungstools von Laravel anstelle anderer Verschlüsselungsalgorithmen zu verwenden. Alle mit Laravel verschlüsselten Ergebnisse werden mit einem Message Authentication Code (MAC) signiert, sodass der zugrunde liegende Wert nach der Verschlüsselung nicht geändert werden kann.

Einstellungen

Bevor Sie das Verschlüsselungstool von Laravel verwenden, müssen Sie zunächst die

Konfigurationsdatei

festlegen Option. Sie sollten den Schlüssel mit dem Befehl config/app.php generieren, einem Artisan-Befehl, der den sicheren Zufallsbytegenerator von PHP zum Erstellen des Schlüssels verwendet. Wenn dieser key-Wert nicht korrekt eingestellt ist, sind alle von Laravel verschlüsselten Werte unsicher. php artisan key:generatekey

Verwendung

Einen Wert verschlüsseln

Sie können Hilfsmittel verwenden Funktion „encrypt“, um einen Wert zu verschlüsseln. Alle verschlüsselten Werte werden mit AES-256-CBC von OpenSSL verschlüsselt. Darüber hinaus werden alle verschlüsselten Werte mit einem Message Authentication Code (MAC) signiert, um Manipulationen an der verschlüsselten Zeichenfolge zu erkennen:

<?php
   namespace App\Http\Controllers;
   use App\User;use Illuminate\Http\Request;
   use App\Http\Controllers\Controller;class UserController extends Controller{  
     /**
     * 存储用户的保密信息
     *
     * @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();  
        }
     }

Keine Serialisierungsverschlüsselung

Während des Verschlüsselungsprozesses wird der verschlüsselte Wert serialize nach der Serialisierung übergeben, wodurch verschlüsselte Objekte und Arrays ermöglicht werden. Daher müssen Nicht-PHP-Clients, die verschlüsselte Werte empfangen, die Daten unserialize deserialisieren. Wenn Sie einen Wert ver- oder entschlüsseln möchten, ohne ihn zu serialisieren, können Sie die Methoden Crypt und encryptString der decryptString Facade verwenden:

use Illuminate\Support\Facades\Crypt;
$encrypted = Crypt::encryptString('Hello world.');
$decrypted = Crypt::decryptString($encrypted);

Wert entschlüsseln

Zum Entschlüsseln können Sie die Hilfsfunktion decrypt verwenden. Wenn der Wert nicht korrekt entschlüsselt werden kann, beispielsweise wenn der MAC ungültig ist, wird eine Ausnahme IlluminateContractsEncryptionDecryptException ausgelöst:

use Illuminate\Contracts\Encryption\DecryptException;try { 
   $decrypted = decrypt($encryptedValue);
  } 
catch (DecryptException $e) {
    //
}
Dieser Artikel wurde zuerst auf der Website LearnKu.com veröffentlicht.