Avatar ·

¿Cómo usar correctamente bcrypt para hashear contraseñas en PHP?

¡Hola a todos! Soy un desarrollador PHP principiante y no puedo entender cómo almacenar contraseñas de forma segura. Actualmente solo uso la función md5() o sha1() para hashear, pero leí en algún lugar que esto es incorrecto e inseguro. Dicen que se debe usar bcrypt.

<?php
// Mi código actual (sé que está mal)
$password = 'my_secret_pass';
$hash = md5($password);
// Guardo $hash en la base de datos

// Verificación al iniciar sesión
if (md5($_POST['password']) == $hash_from_db) {
    echo "¡Inicio de sesión exitoso!";
}
?>

He oído hablar de bcrypt, pero no entiendo cómo instalarlo y usarlo. Parece que PHP tiene alguna función incorporada, pero no sé cómo se llama ni cómo trabajar con ella correctamente. También me confunde que necesito especificar un "salt" — ¿qué es eso y dónde se almacena? ¿Necesito generar un nuevo salt para cada contraseña? ¿Y cómo verifico la contraseña cuando el usuario inicia sesión?

Por favor, indíquenme paso a paso