نسخه:

هش کردن

معرفی

Hash نمای لاراول هش Bcrypt و Argon2 ایمن را برای ذخیره رمزهای عبور کاربر فراهم می کند. اگر از کلاس‌های داخلی LoginController و RegisterController کلاس‌های موجود در برنامه لاراول خود استفاده می‌کنید، به‌طور پیش‌فرض از Bcrypt برای ثبت‌نام و احراز هویت استفاده می‌کنند.

Bcrypt یک انتخاب عالی برای هش کردن رمزهای عبور است زیرا "ضریب کار" آن قابل تنظیم است، به این معنی که زمان تولید هش را می توان با افزایش قدرت سخت افزار افزایش داد.

پیکربندی

درایور هش پیش فرض برای برنامه شما در config/hashing.php فایل پیکربندی پیکربندی شده است. در حال حاضر سه درایور پشتیبانی می شود: Bcrypt و Argon2 (انواع Argon2i و Argon2id).

درایور Argon2i به PHP 7.2.0 یا بالاتر و درایور Argon2id به PHP 7.3.0 یا بالاتر نیاز دارد.

استفاده پایه

می‌توانید با فراخوانی make روش روی Hash نما، رمز عبور را هش کنید:

<?php
 
namespace App\Http\Controllers;
 
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;
 
class UpdatePasswordController extends Controller
{
/**
* Update the password for the user.
*
* @param Request $request
* @return Response
*/
public function update(Request $request)
{
// Validate the new password length...
 
$request->user()->fill([
'password' => Hash::make($request->newPassword)
])->save();
}
}

تنظیم فاکتور کار Bcrypt

اگر از الگوریتم Bcrypt استفاده می کنید، این make روش به شما اجازه می دهد تا با استفاده از گزینه، ضریب کار الگوریتم را مدیریت کنید rounds . با این حال، پیش فرض برای اکثر برنامه ها قابل قبول است:

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

تنظیم ضریب کاری Argon2

اگر از الگوریتم Argon2 استفاده می‌کنید، این make روش به شما اجازه می‌دهد تا ضریب کار الگوریتم را با استفاده از گزینه‌های memory ، time و و مدیریت کنید. threads با این حال، پیش فرض ها برای اکثر برنامه ها قابل قبول هستند:

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

تأیید یک رمز عبور در برابر هش

این check روش به شما امکان می‌دهد بررسی کنید که یک رشته متن ساده با یک هش مشخص مطابقت دارد. LoginController با این حال، اگر از همراه با لاراول استفاده می کنید ، احتمالاً نیازی به استفاده مستقیم از آن ندارید، زیرا این کنترلر به طور خودکار این روش را فراخوانی می کند:

if (Hash::check('plain-text', $hashedPassword)) {
// The passwords match...
}

بررسی اینکه آیا یک رمز عبور نیاز به اصلاح مجدد دارد یا خیر

این needsRehash تابع به شما امکان می دهد تعیین کنید که آیا فاکتور کار مورد استفاده توسط هشر از زمان هش کردن رمز عبور تغییر کرده است یا خیر:

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