Лучший способ - не пытаться восстановить исходный пароль. Если пользователь теряет свой пароль, генерирует новый случайный пароль и использует внеполосный метод для его отправки ему (например, по электронной почте). Помните, что весь смысл хэширования пароля состоит в том, чтобы предотвратить восстановление.
Я знаю, я знаю, электронная почта небезопасна. Но если вы требуете от пользователей немедленной смены сгенерированного пароля, риск снижается.
Кстати, я не могу порекомендовать, чтобы вы также солили пароль и повторяли хэш, чтобы предотвратить атаки методом перебора, если злоумышленник получит хэшированное значение.