Documentación de Laravel 10.x
Aquí encontrarás fragmentos de código de Laravel y consejos útiles sobre desarrollo web.
Los servicios de cifrado de Laravel proporcionan una interfaz simple y conveniente para cifrar y descifrar texto a través de OpenSSL utilizando cifrado AES-256 y AES-128. Todos los valores cifrados de Laravel están firmados con un código de autenticación de mensajes (MAC) para que su valor subyacente no pueda ser modificado o manipulado una vez cifrado.
Antes de usar el encriptador de Laravel, debes establecer la opción de configuración key
en tu archivo de configuración config/app.php
. Esta opción de configuración se maneja mediante la variable de entorno APP_KEY
. Debes usar el comando php artisan key:generate
para generar el valor de esta variable, ya que el comando key:generate
utilizará el generador de bytes aleatorios seguros de PHP para construir una clave criptográficamente segura para tu aplicación. Típicamente, el valor de la variable de entorno APP_KEY
se generará automáticamente durante la instalación de Laravel.
Puedes cifrar un valor usando el método encryptString
proporcionado por la fachada Crypt
. Todos los valores cifrados están encriptados usando OpenSSL y el cifrado AES-256-CBC. Además, todos los valores cifrados están firmados con un código de autenticación de mensajes (MAC). El código de autenticación de mensajes integrado evitará la descifrado de cualquier valor que haya sido manipulado por usuarios malintencionados:
<?php namespace App\Http\Controllers; use Illuminate\Http\RedirectResponse;use Illuminate\Http\Request;use Illuminate\Support\Facades\Crypt; class DigitalOceanTokenController extends Controller{ /** * Almacena un token de la API de DigitalOcean para el usuario. */ public function store(Request $request): RedirectResponse { $request->user()->fill([ 'token' => Crypt::encryptString($request->token), ])->save(); return redirect('/secrets'); }}
Puedes descifrar valores usando el método decryptString
proporcionado por la fachada Crypt
. Si el valor no se puede descifrar correctamente, como cuando el código de autenticación de mensajes es inválido, se lanzará una excepción Illuminate\Contracts\Encryption\DecryptException
:
use Illuminate\Contracts\Encryption\DecryptException;use Illuminate\Support\Facades\Crypt; try { $decrypted = Crypt::decryptString($encryptedValue);} catch (DecryptException $e) { // ...}