Идёт обновление сайта. Несколько дней возможны сбои в оформлении и переводах. Документация работает — если страница выглядит сломанной, обновите её позже.

Документация
L Laravel L intervention/image
Войти
Главная Laravel 10.x Хеширование

Хеширование

10.x 7 мар 2026 г.

#Введение

Laravel Hash фасад обеспечивает безопасное хеширование паролей пользователей с помощью Bcrypt и Argon2. Если вы используете один из стартовых наборов приложений Laravel, по умолчанию для регистрации и аутентификации будет использоваться Bcrypt.

Bcrypt — отличный выбор для хеширования паролей, поскольку его «фактор работы» можно настраивать, что означает возможность увеличения времени генерации хеша по мере роста мощности оборудования. При хешировании паролей медленное выполнение — это хорошо. Чем дольше алгоритм хеширует пароль, тем больше времени требуется злоумышленникам для создания «радужных таблиц» всех возможных значений хеша строк, которые могут использоваться в атаках перебором.

#Настройка

Драйвер хеширования по умолчанию для вашего приложения настраивается в конфигурационном файле config/hashing.php. В настоящее время поддерживаются несколько драйверов: Bcrypt и Argon2 (варианты Argon2i и Argon2id).

#Основное использование

#Хеширование паролей

Вы можете создать хеш пароля, вызвав метод make у фасада Hash:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;

class PasswordController extends Controller
{
    /**
     * Обновить пароль пользователя.
     */
    public function update(Request $request): RedirectResponse
    {
        // Проверить длину нового пароля...

        $request->user()->fill([
            'password' => Hash::make($request->newPassword)
        ])->save();

        return redirect('/profile');
    }
}

#Настройка фактора работы Bcrypt

Если вы используете алгоритм Bcrypt, метод make позволяет управлять фактором работы алгоритма с помощью опции rounds; однако значение по умолчанию, установленное Laravel, подходит для большинства приложений:

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

#Настройка фактора работы Argon2

Если вы используете алгоритм Argon2, метод make позволяет управлять фактором работы алгоритма с помощью опций memory, time и threads; однако значения по умолчанию, установленные Laravel, подходят для большинства приложений:

$hashed = Hash::make('password', [
    'memory' => 1024,
    'time' => 2,
    'threads' => 2,
]);
Примечание

Для получения дополнительной информации об этих опциях обратитесь к официальной документации PHP по хешированию Argon.

#Проверка соответствия пароля хешу

Метод check, предоставляемый фасадом Hash, позволяет проверить, соответствует ли заданная строка в открытом виде заданному хешу:

if (Hash::check('plain-text', $hashedPassword)) {
    // Пароли совпадают...
}

#Определение необходимости повторного хеширования пароля

Метод needsRehash, предоставляемый фасадом Hash, позволяет определить, изменился ли фактор работы хешера с момента хеширования пароля. Некоторые приложения выполняют эту проверку во время процесса аутентификации:

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