Skip to main content

Qu’est-ce que la façade Crypt

Le service de chiffrement de Laravel utilise OpenSSL avec AES-256-CBC (ou AES-128-CBC) et propose une interface simple pour chiffrer et déchiffrer des valeurs. Toutes les valeurs chiffrées par Laravel sont signées par un Message Authentication Code (MAC). Le déchiffrement échoue donc si la valeur a été altérée.

Configuration

Génération d’APP_KEY

Avant d’utiliser le chiffrement, la clé key de config/app.php doit être définie. Sa valeur provient de la variable d’environnement APP_KEY. Générez une clé sûre avec php artisan key:generate. Une clé cryptographiquement sûre est produite via le générateur d’aléa sécurisé de PHP.
À l’installation de Laravel, la clé est généralement générée automatiquement et stockée dans .env.
Ne divulguez jamais APP_KEY. Si elle fuit, toutes vos données chiffrées peuvent être déchiffrées.

Rotation de la clé de chiffrement

Changer la clé déconnecte toutes les sessions utilisateur authentifiées, car Laravel chiffre l’ensemble des cookies, y compris ceux de session. De plus, les données chiffrées avec l’ancienne clé ne peuvent plus être déchiffrées. Pour atténuer cela, listez les anciennes clés séparées par une virgule dans APP_PREVIOUS_KEYS.
Laravel chiffre toujours avec la clé actuelle mais, lors du déchiffrement, essaie les anciennes clés en cas d’échec. Cela permet une rotation sans interruption pour les utilisateurs.

Chiffrement

Utilisez encryptString de la façade Crypt pour chiffrer une valeur. La valeur chiffrée est produite avec OpenSSL et AES-256-CBC, et signée par MAC.
encryptString chiffre la chaîne sans sérialisation. Pour chiffrer un objet ou un tableau, utilisez encrypt.

Déchiffrement

Utilisez decryptString pour déchiffrer une valeur. Si le MAC est invalide (ou en cas d’échec), une DecryptException est levée.

Cast de modèle

Sur un modèle Eloquent, le cast encrypted automatise le chiffrement/déchiffrement d’un attribut.
Avec ce cast, les valeurs sont automatiquement chiffrées/déchiffrées à l’assignation et à la lecture.
Les casts encrypted:* utilisent en interne Crypt::encrypt et Crypt::decrypt. Utilisez le type de colonne text ou longText en base.

Exemple : stockage chiffré d’informations personnelles

Modèle typique de stockage sécurisé d’informations personnelles (numéro national, numéro de carte…).

Migration

Modèle

Contrôleur


Récapitulatif

Prochaines étapes

Hachage

Apprenez à hacher et vérifier les mots de passe en toute sécurité.

Autorisation

Contrôlez l’accès à l’aide des policies et des gates.
Dernière modification le 13 juillet 2026