Estamos actualizando el sitio. Durante unos días es posible que veas fallos de diseño o de traducción. La documentación sigue disponible: si una página se ve mal, recárgala más tarde.

Cifrado

10.x 7 de mar. de 2026

#Introducción

Los servicios de cifrado de Laravel proporcionan una interfaz simple y conveniente para cifrar y descifrar texto mediante OpenSSL usando cifrado AES-256 y AES-128. Todos los valores cifrados en Laravel están firmados con un código de autenticación de mensaje (MAC) para que su valor subyacente no pueda ser modificado o manipulado una vez cifrado.

#Configuración

Antes de usar el encrypter de Laravel, debe configurar la opción key en el archivo de configuración config/app.php. Este valor de configuración se obtiene de la variable de entorno APP_KEY. Debe usar el comando php artisan key:generate para generar el valor de esta variable, ya que el comando key:generate utiliza el generador seguro de bytes aleatorios de PHP para crear una clave criptográficamente segura para su aplicación. Normalmente, el valor de la variable de entorno APP_KEY se genera automáticamente durante la instalación de Laravel.

#Uso del Encrypter

#Cifrar un valor

Puede cifrar un valor usando el método encryptString proporcionado por el facade Crypt. Todos los valores cifrados se cifran 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 mensaje (MAC). El código de autenticación 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
{
    /**
     * Almacenar un token API de DigitalOcean para el usuario.
     */
    public function store(Request $request): RedirectResponse
    {
        $request->user()->fill([
            'token' => Crypt::encryptString($request->token),
        ])->save();

        return redirect('/secrets');
    }
}

#Descifrar un valor

Puede descifrar valores usando el método decryptString proporcionado por el facade Crypt. Si el valor no puede ser descifrado correctamente, por ejemplo cuando el código de autenticación de mensaje 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) {
    // ...
}