On your `User` table you have a column such as `hashing_scheme`. If you don&#x27;t have one of these columns already, create it with the default value of your current scheme (e.g., `bcrypt`)<p>When a user attempts to log in, you hash the password they submitted with whatever&#x27;s in that user&#x27;s `hashing_scheme`. If the password was incorrect, fail early.<p>If the password was correct, and this user&#x27;s `hashing_scheme` value is different to the application&#x27;s `current_hashing_scheme`, you rehash the user&#x27;s password (that you got via the POST request or otherwise) with the new scheme, update the `password_hash` and `hashing_scheme` value in the database.<p>This is just one way to do it, which is how Django performs hashing scheme migrations IIRC.