Heim > Artikel > PHP-Framework > Was ist die Verschlüsselungsmethode von Laravel?
Laravels Verschlüsselungsmethode: 1. Verwenden Sie Hash, die Syntax „bcrypt(‘Text, der verschlüsselt werden muss‘)“ oder „Hash::make(‘Text, der verschlüsselt werden muss‘)“ 2. Verwenden Sie den Verschlüsselungscode von Laravel, die Syntax „ encrypt('Text, der verschlüsselt werden muss')“.
Die Betriebsumgebung dieses Tutorials: Windows 7-System, Laravel 6-Version, DELL G3-Computer.
Hash
Laravels Hash bietet sichere Bcrypt- und Argon2-Hashing-Algorithmen zum Speichern von Benutzerkennwörtern.
Hinweis: Bcrypt ist eine ausgezeichnete Wahl für das Hashing von Passwörtern, da sein „Arbeitsfaktor“ einstellbar ist, was bedeutet, dass mit zunehmenden Hardwarefunktionen auch der Zeitaufwand für die Hash-Erstellung zunimmt.
Konfiguration
Wenden Sie die Standard-Hash-Treiberkonfiguration in der Konfigurationsdatei config/hashing.php an. Derzeit werden zwei Treiber unterstützt: Bcrypt und Argon2.
Hinweis: Der Argon2i-Treiber erfordert PHP 7.2.0 oder höher und der Argon2id-Treiber erfordert PHP 7.3.0 oder höher.
Erste Methode
bcrypt('admin888')
Zweite
use Illuminate\Support\Facades\Hash; $pwd = Hash::make('admin888'); //加密存储
Authentifizierungsmethode
if (Hash::check('qwe123456', $pwd)) { // 密码匹配... } public function login() { $credentials = request(['email', 'password']); if (! $token = auth('api')->attempt($credentials)) { return response()->json(['error' => 'Unauthorized'], 401); } return $this->respondWithToken($token); }
Verschlüsselung
Laravels Verschlüsselungsgerät verwendet OpenSSL zur Bereitstellung 6- und AES-128-Verschlüsselung. Es wird dringend empfohlen, die eigenen Verschlüsselungseinstellungen von Laravel zu verwenden und nicht zu versuchen, einen eigenen „selbst entwickelten“ Verschlüsselungsalgorithmus einzuführen. Alle von Laravel verschlüsselten Werte werden mit einem Message Authorization Code (MAC) signiert, sodass der zugrunde liegende Wert nach der Verschlüsselung nicht mehr geändert werden kann.
Konfiguration
Bevor Sie den Encryptor von Laravel verwenden, müssen Sie die Schlüsseloption in der Konfigurationsdatei config/app.php auf eine 32-Bit-Zufallszeichenfolge setzen. Dieser Schlüssel kann mit dem Befehl php artisan key:generate generiert werden, der den sicheren Zufallsbytegenerator von PHP verwendet, um den Wert des Schlüssels zu erstellen. Wenn dieser Wert nicht festgelegt ist, sind alle mit Laravel verschlüsselten Werte unsicher.
Verschlüsselung
Sie können Daten mit der Hilfsfunktion verschlüsseln verschlüsseln, alle verschlüsselten Werte werden mit OpenSSL und AES-256-CBC-Verschlüsselung verschlüsselt. Darüber hinaus werden alle verschlüsselten Werte mit einem Message Authentication Code (MAC) signiert, um jegliche Änderung der verschlüsselten Zeichenfolge zu verhindern.
encrypt('密码')
Verschlüsselung ohne Serialisierung
Verschlüsselte Werte werden während der Verschlüsselung von der Serialisierungsfunktion serialize verarbeitet, was die Verschlüsselung von Objekten und Arrays ermöglicht. Daher müssen verschlüsselte Daten, die von Nicht-PHP-Clients empfangen werden, deserialisiert werden.
Wenn Sie Daten ohne Serialisierung ver- und entschlüsseln möchten, können Sie die von der Crypt-Fassade bereitgestellten Methoden encryptString und decryptString verwenden:
use Illuminate\Support\Facades\Crypt; $encrypted = Crypt::encryptString('Hello world.'); $decrypted = Crypt::decryptString($encrypted);
Decryption
Sie können die Hilfsfunktion decrypt verwenden, um die verschlüsselten Daten zu entschlüsseln. Wenn der Wert nicht entschlüsselt werden kann, beispielsweise der MAC ungültig ist, wird eine IlluminateContractsEncryptionDecryptException ausgelöst:
use Illuminate\Contracts\Encryption\DecryptException; try { $decrypted = decrypt($encryptedValue); } catch (DecryptException $e) { // }
Verwandte Empfehlungen: Die neuesten fünf Laravel-Video-Tutorials
Das obige ist der detaillierte Inhalt vonWas ist die Verschlüsselungsmethode von Laravel?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!