Hash


Konfigurasi

Penggunaan Baharu

  • Pengenalan
  • Laravel Hash fasad menyediakan kaedah penyulitan cincang Bcrypt dan Argon2 yang selamat untuk menyimpan kata laluan pengguna. Jika anda menggunakan kelas LoginController dan RegisterController terbina dalam dalam aplikasi Laravel anda, mereka menggunakan Bcrypt untuk pendaftaran dan pengesahan secara lalai.
    {tip} Bcrypt sesuai untuk mencincang kata laluan kerana "pekali penyulitan"nya boleh dilaraskan sewenang-wenangnya, yang bermaksud bahawa masa yang diperlukan untuk menjana cincang boleh meningkat apabila kuasa perkakasan meningkat.
Configuration

Anda boleh mengkonfigurasinya dalam config/hashing.php< /code > Konfigurasikan pemacu cincang lalai dalam fail konfigurasi. Tiga pemacu kini disokong: Bcrypt dan Argon2

(varian Argon2i dan Argon2id).
{note} Pemacu Argon2i memerlukan PHP 7.2.0 atau lebih tinggi dan pemacu Argon2id memerlukan PHP 7.3.0 atau lebih tinggi.

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

Penggunaan asas
🎜Anda boleh memanggil Hash Kaedah make Facade untuk menyulitkan kata laluan anda: 🎜
<?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();  
    }
 }
🎜🎜

Laraskan pekali penyulitan Bcrypt

Jika anda menggunakan algoritma Bcrypt, anda boleh menggunakan pilihan pusingan dalam kaedah make untuk mengkonfigurasi pekali penyulitan algoritma. Walau bagaimanapun, untuk kebanyakan aplikasi, nilai lalai adalah mencukupi: 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');
 }

Laraskan pekali penyulitan Argon2Jika menggunakan algoritma Argon2, anda boleh memori, masa dan benang dalam kaedah kod>buat untuk mengkonfigurasi pekali penyulitan algoritma. Kemudian, untuk kebanyakan aplikasi, lalai sudah memadai:
rrreee
{tip} Untuk mendapatkan maklumat lanjut tentang pilihan ini, lihat dokumentasi rasmi PHP🎜. 🎜