Cryptage et décryptage


Utilisation

  • IntroductionLe mécanisme de cryptage de Laravel utilise le cryptage AES-256 et AES-128 fourni par OpenSSL. Il est fortement recommandé d'utiliser les outils de chiffrement intégrés de Laravel plutôt que d'autres algorithmes de chiffrement. Tous les résultats chiffrés de Laravel sont signés à l'aide d'un code d'authentification de message (MAC) afin que la valeur sous-jacente ne puisse pas être modifiée après le chiffrement.

Paramètres

Avant d'utiliser l'outil de cryptage de Laravel, vous devez d'abord définir la valeur
Si la valeur n'est pas définie correctement, toutes les valeurs cryptées par Laravel ne seront pas sécurisées.

Usage

Crypter une valeur

Vous pouvez utiliser la fonction d'assistance Encrypt pour chiffrer une valeur. Toutes les valeurs cryptées sont cryptées à l'aide de l'AES-256-CBC d'OpenSSL. De plus, toutes les valeurs cryptées sont signées à l'aide d'un code d'authentification de message (MAC) pour détecter si la chaîne cryptée a été falsifiée : config/app.php 配置文件中的 key 选项。你应当使用 php artisan key:generate 命令来生成密钥,这条 Artisan 命令会使用 PHP 的安全随机字节生成器来构建密钥。如果这个 key

<?php
   namespace App\Http\Controllers;
   use App\User;use Illuminate\Http\Request;
   use App\Http\Controllers\Controller;class UserController extends Controller{  
     /**
     * 存储用户的保密信息
     *
     * @param  Request  $request
     * @param  int  $id
     * @return Response
     */  
  public function storeSecret(Request $request, $id) 
     {     
        $user = User::findOrFail($id);        
        $user->fill([          
          'secret' => encrypt($request->secret)    
            ])->save();  
        }
     }

Pas de cryptage de sérialisation

Pendant le processus de cryptage, la valeur cryptée serialize est sérialisée et transmise, permettant le cryptage des objets et des tableaux. Par conséquent, les clients non PHP recevant des valeurs chiffrées doivent unsérialize désérialiser les données. Si vous souhaitez crypter et déchiffrer des valeurs sans sérialisation, vous pouvez utiliser les méthodes encryptString et decryptString de Crypt Facade : serialize 序列化后传递,允许加密对象和数组。因此,接收加密值的非 PHP 客户端需要对数据进行 unserialize 反序列化。如果想要在不序列化的情况下加密解密值,你可以使用 Crypt Facade 的 encryptStringdecryptString 方法:

use Illuminate\Support\Facades\Crypt;
$encrypted = Crypt::encryptString('Hello world.');
$decrypted = Crypt::decryptString($encrypted);

解密一个值

你可以使用辅助函数 decrypt 来进行解密。如果该值不能被正确解密,例如 MAC 无效时,会抛出异常 IlluminateContractsEncryptionDecryptException

use Illuminate\Contracts\Encryption\DecryptException;try { 
   $decrypted = decrypt($encryptedValue);
  } 
catch (DecryptException $e) {
    //
}

Déchiffrer une valeurVous pouvez utiliser la fonction d'assistance decrypt pour décrypter. Si la valeur ne peut pas être déchiffrée correctement, par exemple lorsque le MAC n'est pas valide, une exception IlluminateContractsEncryptionDecryptException sera levée :
rrreee
Cet article a été publié pour la première fois sur le site Web 🎜LearnKu.com🎜. 🎜🎜