Start here. This is the direct spoken answer to practice first.
Overview
Uses a password-specific algorithm, measurable work settings, and gradual rehashing without blocking service capacity.
I use a maintained password-hashing library with a password-specific algorithm such as Argon2, never a fast general hash like SHA-256. Each password gets a unique salt, and the encoded hash stores the algorithm and cost parameters needed for verification. I tune memory and time cost on the actual deployment so login is intentionally expensive but still sustainable. Plain passwords are never stored or logged.