Hacher


Utilisation de base

  • Introduction
  • Façade Laravel Hash fournit des méthodes sécurisées de cryptage de hachage Bcrypt et Argon2 pour stocker les mots de passe des utilisateurs. Si vous utilisez les classes LoginController et RegisterController intégrées dans votre application Laravel, elles utilisent Bcrypt pour l'enregistrement et l'authentification par défaut.
    {tip} Bcrypt est idéal pour hacher des mots de passe car son « coefficient de cryptage » peut être ajusté arbitrairement, ce qui signifie que le temps nécessaire pour générer un hachage peut augmenter à mesure que la puissance du matériel augmente.

Configuration
Vous pouvez le configurer dans config/hashing.php< /code > Configurez le pilote de hachage par défaut dans le fichier de configuration. Trois pilotes sont actuellement pris en charge : Bcrypt

et Argon2

(variantes Argon2i et Argon2id).

Hash facade 为存储用户密码提供了安全的 Bcrypt 和 Argon2 哈希加密方式。如果你在你的 Laravel 应用程序中使用了内置的 LoginControllerRegisterController 类,那么它们默认使用 Bcrypt 进行注册和身份认证。

{tip} Bcrypt 是哈希密码的理想选择,因为它的 「加密系数」 可以任意调整,这意味着生成哈希所需的时间可以随着硬件功率的增加而增加。

配置

你可以在 config/hashing.php 配置文件中配置默认哈希驱动程序。目前支持三种驱动程序:BcryptArgon2 (Argon2i and Argon2id variants)。

{note} Argon2i 驱动程序需要 PHP 7.2.0 或更高版本,而 Argon2id 驱动程序则需要 PHP 7.3.0 或更高版本。

基本用法

你可以通过调用 Hash facade 的 make{note} 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.

🎜
🎜🎜Utilisation de base🎜🎜Vous pouvez appeler Hash Méthode make de Facade pour chiffrer votre mot de passe : 🎜
<?php
    namespace App\Http\Controllers;
    use Illuminate\Http\Request;
    use Illuminate\Support\Facades\Hash;
    use App\Http\Controllers\Controller;class UpdatePasswordController extends Controller{ 
    /**
     * 更新用户密码。
     *
     * @param  Request  $request
     * @return Response
     */    
  public function update(Request $request)   
   {       
    // 验证新密码的长度        
    $request->user()->fill([        
        'password' => Hash::make($request->newPassword)      
      ])->save();  
    }
 }
🎜🎜

Ajustez le coefficient de cryptage Bcrypt

Si vous utilisez l'algorithme Bcrypt, vous pouvez utiliser l'option rounds dans la méthode make pour configurer le coefficient de cryptage de l'algorithme. Cependant, pour la plupart des applications, la valeur par défaut est suffisante : make 方法中使用 rounds 选项来配置该算法的加密系数。然而,对大多数应用程序来说,默认值就足够了:

$hashed = Hash::make('password', [ 
   'rounds' => 12
]);

调整 Argon2 加密系数

如果使用 Argon2 算法,你可以在  make 方法中使用 memorytimethreads 选项来配置该算法的加密系数。然后,对大多数应用程序来说,默认值就足够了:

$hashed = Hash::make('password', [ 
   'memory' => 1024,    
   'time' => 2,    
   'threads' => 2,
]);

{tip} 有关这些选项的更多信息,请查阅 PHP 官方文档

密码哈希验证

check 方法能为您验证一段给定的未加密字符串与给定的哈希值是否一致。然而,如果您使用 Laravel 内置的 LoginController 控制器,您可能不需要直接使用这个方法,因为该控制器会自动调用这个方法:

if (Hash::check('plain-text', $hashedPassword)) { 
   // 密码匹配
 }

检查密码是否需要重新哈希

needsRehash

if (Hash::needsRehash($hashed)) { 
   $hashed = Hash::make('plain-text');
 }

Ajuster le coefficient de chiffrement Argon2Si vous utilisez l'algorithme Argon2, vous pouvez < Utiliser le < options code>memory, time et threads dans la méthode code>make pour configurer le coefficient de chiffrement de l'algorithme. Ensuite, pour la plupart des applications, les valeurs par défaut suffiront :
rrreee
{tip} Pour plus d'informations sur ces options, consultez Documentation officielle PHP🎜. 🎜