Проблема, о которой вы говорите, на самом деле не специфична для PHPass, но хэширует пароли в целом.Это в основном просто двойное хеширование.Об этой теме уже говорилось в другом вопросе: Является ли "двойное хеширование" пароля менее безопасным, чем простое хеширование?
Если вы посмотрите туда, вы увидите, что тамДо сих пор ведутся споры о том, хуже ли двойное хеширование, поскольку оно уменьшает диапазон символов, передаваемых во вторую (или последующую) хеш-функцию.Тем не менее, он замедляет процесс хеширования, борясь с атаками грубой силы, но только если сделать это дважды, это не повлияет на скорость.
Если вы не хотите иметь дело с двойным хэшированиемвы можете просто добавить поле флага в таблицу базы данных users
и установить его равным true
для всех новых пользователей, которые присоединяются после установки новой формы хэширования PHPass.Затем, когда пользователь входит в систему, если у него не установлено поле флага, используйте старую систему хеширования или измененную версию, которую вы подробно описали в своем вопросе.Если у них есть поле флага, вы можете использовать любой новый процесс хеширования, который вы настроили.
Обновление: На самом деле, опираясь на это, вы можете попробовать установить этот флаг,и как только они войдут в систему под старой системой, если это совпадение, в ваших $_POST
данных все равно будет сохранен их нехэшированный пароль, так что вы сможете запустить его через новую настройку хеширования и сохранить новый хеш, а затем установите флаг true
, так как они были обновлены до нового метода хеширования.С этого момента они будут использовать новый метод хеширования.