Функция bcrypt
Функция bcrypt предоставляет удобный способ хеширования паролей
с использованием алгоритма Bcrypt. Она является обёрткой над фасадом
Hash и методом make. Функция принимает один обязательный
параметр - строку, которую необходимо захешировать, и возвращает
хешированную строку. Bcrypt автоматически генерирует случайную "соль"
(соль) для каждого хеша, что делает его устойчивым к атакам по радужным
таблицам. Алгоритм также включает фактор стоимости (cost factor),
который по умолчанию равен 10, но может быть изменён через параметр
rounds в конфигурационном файле config/hashing.php.
Синтаксис
<?php
bcrypt($value);
?>
Пример
Давайте захешируем пароль пользователя при регистрации:
<?php
namespace App\Http\Controllers\Auth;
use App\Models\User;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
class RegisterController extends Controller
{
public function register(Request $request)
{
$validated = $request->validate([
'name' => 'required|string|max:255',
'email' => 'required|string|email|max:255|unique:users',
'password' => 'required|string|min:8|confirmed',
]);
$user = User::create([
'name' => $validated['name'],
'email' => $validated['email'],
'password' => bcrypt($validated['password']),
]);
echo "User created successfully";
}
}
?>
Результат выполнения кода:
"User created successfully"
Пример
Проверим хешированный пароль с помощью фасада Hash. Обратите внимание,
что для проверки пароля используется метод check, который принимает
обычный пароль и его хеш:
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;
class LoginController extends Controller
{
public function login(Request $request)
{
$user = User::where('email', $request->email)->first();
if ($user && Hash::check($request->password, $user->password)) {
echo "Login successful";
} else {
echo "Invalid credentials";
}
}
}
?>
Результат выполнения кода:
"Login successful"
Пример
Давайте создадим хеш пароля напрямую с помощью функции bcrypt
и выведем его на экран:
<?php
$password = 'secure_password_123';
$hash = bcrypt($password);
echo $hash;
?>
Результат выполнения кода:
"$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi"
Смотрите также
-
фасад
Hash,
который предоставляет методы для безопасного хеширования -
метод
make,
который создаёт хеш пароля -
метод
check,
который проверяет пароль на соответствие хешу -
метод
needsRehash,
который проверяет необходимость перехеширования