Загрузка...

🔐 Что такое bcrypt?

laravel cover

Что такое bcrypt?

bcrypt — это криптографический алгоритм хеширования, который используется для безопасного хранения паролей. Он превращает обычный пароль в зашифрованный хеш, который невозможно (или крайне сложно) расшифровать обратно.

Laravel использует bcrypt по умолчанию для хеширования паролей.


Как использовать bcrypt в Laravel?

1. Хеширование пароля

use Illuminate\Support\Facades\Hash;

$hashedPassword = Hash::make('my_secure_password');

echo $hashedPassword;
// Пример результата: $2y$10$eImiTXuWVxfM37uY4JANjQ== 
  • Hash::make() автоматически использует bcrypt и добавляет соль (salt) для повышения безопасности.
  • Хеш всегда разный для одного и того же пароля из-за соли.

2. Проверка пароля

$hashedPassword = '$2y$10$eImiTXuWVxfM37uY4JANjQ=='; // Хеш из базы данных
$plainPassword = 'my_secure_password';

if (Hash::check($plainPassword, $hashedPassword)) {
    echo 'Пароль верный!';
} else {
    echo 'Неверный пароль!';
}
  • Hash::check() сравнивает обычный пароль с хешем.
  • Он не расшифровывает хеш, а применяет тот же алгоритм к введённому паролю и сравнивает результат.

3. Авто-обновление хеша (re-hash)

Если со временем параметры хеширования изменятся (например, увеличится стоимость вычислений), Laravel может автоматически определить, нужно ли обновить хеш:

if (Hash::needsRehash($hashedPassword)) {
    $hashedPassword = Hash::make('my_secure_password');
}

Использование в Livewire для обновления пароля

use Illuminate\Support\Facades\Hash;

public function updatePassword()
{
    $this->validate([
        'state.current_password' => 'required',
        'state.password' => 'required|min:8|confirmed',
    ]);

    // Проверка текущего пароля
    if (!Hash::check($this->state['current_password'], $this->user->password)) {
        return session()->flash('error', 'Неверный текущий пароль.');
    }

    // Хеширование нового пароля
    $this->user->password = Hash::make($this->state['password']);
    $this->user->save();

    session()->flash('success', 'Пароль успешно обновлён!');
    $this->reset('state');
}

🔑 Почему bcrypt безопасен?

  • Соль (salt): добавляется автоматически, предотвращает атаки по радужным таблицам.
  • Медленный: специально замедлен для защиты от атак грубой силой.
  • Кросс-платформенность: одинаково работает на разных языках и системах.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *