Maison > cadre php > Laravel > Quelle est la méthode de cryptage de Laravel ?

Quelle est la méthode de cryptage de Laravel ?

青灯夜游
Libérer: 2021-12-21 11:23:05
original
4840 Les gens l'ont consulté

Méthode de cryptage de Laravel : 1. Utilisez Hash, la syntaxe "bcrypt('Texte qui doit être crypté')" ou "Hash::make('Text qui doit être crypté')" 2. Utilisez le crypteur de Laravel, la syntaxe " encrypt('Texte à chiffrer')".

Quelle est la méthode de cryptage de Laravel ?

L'environnement d'exploitation de ce tutoriel : système Windows 7, version Laravel 6, ordinateur DELL G3.

Les deux méthodes de cryptage de Laravel

Hash

Laravel's Hash fournit des algorithmes de hachage sécurisés Bcrypt et Argon2 pour stocker les mots de passe des utilisateurs.

Remarque : Bcrypt est un excellent choix pour hacher des mots de passe car son « facteur de travail » est réglable, ce qui signifie qu'à mesure que les capacités matérielles augmentent, le temps passé à générer le hachage augmentera également.

Configuration

Appliquez la configuration du pilote de hachage par défaut dans le fichier de configuration config/hashing.php Actuellement, deux pilotes sont pris en charge : Bcrypt et Argon2.

Remarque : le pilote Argon2i nécessite PHP 7.2.0 ou supérieur, et le pilote Argon2id nécessite PHP 7.3.0 ou supérieur.

Première méthode

bcrypt('admin888')
Copier après la connexion

Deuxième

use Illuminate\Support\Facades\Hash;
$pwd = Hash::make('admin888');    //加密存储
Copier après la connexion

Méthode de vérification

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);
}
Copier après la connexion

Cryptage

Le chiffreur de Laravel utilise OpenSSL pour fournir AES-256 et 8 cryptage. Il est fortement recommandé d'utiliser les propres paramètres de cryptage de Laravel et de ne pas essayer d'introduire votre propre algorithme de cryptage « maison ». Toutes les valeurs chiffrées de Laravel sont signées à l'aide d'un code d'autorisation de message (MAC) afin que la valeur sous-jacente ne puisse pas être modifiée une fois chiffrée.

Configuration

Avant d'utiliser le chiffreur de Laravel, vous devez définir l'option clé dans le fichier de configuration config/app.php sur une chaîne aléatoire de 32 bits. Cette clé peut être générée à l'aide de la commande php artisan key:generate, qui utilise le générateur d'octets aléatoires sécurisé de PHP pour construire la valeur de la clé. Si cette valeur n'est pas définie, toutes les valeurs cryptées par Laravel ne sont pas sécurisées.

Cryptage

Vous pouvez crypter les données à l'aide de la fonction d'assistance Encrypt, toutes les valeurs cryptées sont cryptées à l'aide du chiffrement OpenSSL et AES-256-CBC. De plus, toutes les valeurs chiffrées sont signées avec un code d'authentification de message (MAC) pour empêcher toute modification de la chaîne chiffrée.

encrypt('密码')
Copier après la connexion

Cryptage sans sérialisation

Les valeurs cryptées seront traitées par la fonction de sérialisation sérialiser pendant le cryptage, permettant le cryptage des objets et des tableaux. Par conséquent, les données chiffrées reçues par les clients non PHP doivent être désérialisées.

Si vous souhaitez crypter et déchiffrer des données sans sérialisation, vous pouvez utiliser les méthodes encryptString et decryptString fournies par la façade Crypt :

use Illuminate\Support\Facades\Crypt;

$encrypted = Crypt::encryptString('Hello world.');

$decrypted = Crypt::decryptString($encrypted);
Copier après la connexion

Decryption

Vous pouvez utiliser la fonction d'assistance decrypt pour décrypter les données cryptées. Si la valeur ne peut pas être déchiffrée, par exemple si le MAC n'est pas valide, une exception IlluminateContractsEncryptionDecryptException sera levée :

use Illuminate\Contracts\Encryption\DecryptException;

try {
    $decrypted = decrypt($encryptedValue);
} catch (DecryptException $e) {
    //
}
Copier après la connexion

Recommandations associées : Les cinq derniers didacticiels vidéo Laravel

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal