Earlier quoted context omitted.
I am on md5 on one of my projects but it's salted alright. I want to change it. I reckon there is no way to migrate other than resetting every user password.
You could add a second password column to your users. Then if that column is empty, authenticate against the old password. If it passes, hash the password (just supplied by the user) with bcrypt and store it in the new column. Over time, active users get their password upgraded. Then after a longer time, just reset the passwords of the users who never logged in since you started migrating.
On signup store:
$password = password_hash(md5($password),PASSWORD_BCRYPT);
And on login: password_verify(md5($password), $password_hash);
Then you just have apply password_hash() on all you passwords in database.Bonus the migration is instantaneous, you don't need a 6 month transition period.
IMHO it do not reduce the security, but i'm not a crypto expert though.