Hash
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
danRegisterController
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
(varian Argon2i dan Argon2id).config/hashing.php< /code > Konfigurasikan pemacu cincang lalai dalam fail konfigurasi. Tiga pemacu kini disokong: Bcrypt dan Argon2
{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 应用程序中使用了内置的LoginController
和RegisterController
类,那么它们默认使用 Bcrypt 进行注册和身份认证。{tip} Bcrypt 是哈希密码的理想选择,因为它的 「加密系数」 可以任意调整,这意味着生成哈希所需的时间可以随着硬件功率的增加而增加。
配置
你可以在
config/hashing.php
配置文件中配置默认哈希驱动程序。目前支持三种驱动程序:Bcrypt 和 Argon2 (Argon2i and Argon2id variants)。{note} Argon2i 驱动程序需要 PHP 7.2.0 或更高版本,而 Argon2id 驱动程序则需要 PHP 7.3.0 或更高版本。
基本用法
你可以通过调用
Hash
facade 的make
Penggunaan asas🎜Anda boleh memanggilHash
Kaedahmake
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 kaedahmake
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
方法中使用memory
,time
和threads
选项来配置该算法的加密系数。然后,对大多数应用程序来说,默认值就足够了:$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'); }
{tip} Untuk mendapatkan maklumat lanjut tentang pilihan ini, lihat rrreeedokumentasi rasmi PHP🎜. 🎜🎜🎜Pengesahan Cincang Kata Laluan🎜🎜 kaedahsemak boleh mengesahkan untuk anda bahawa rentetan yang tidak disulitkan adalah Sama ada cincang yang diberikan nilai adalah konsisten. Walau bagaimanapun, jika anda menggunakan pengawalLoginController
terbina dalam Laravel, anda mungkin tidak perlu menggunakan kaedah ini secara langsung, kerana pengawal secara automatik akan memanggil kaedah ini: 🎜rrreee