Генерируйте тот же хэш пароля, используя PHPass - PullRequest
1 голос
/ 01 марта 2012

Я нахожусь в процессе преобразования сайта из Wordpress в пользовательскую CMS, разработанную в Codeigniter.Мне сказали, что Wordpress использует PHPass для хэширования своих паролей, поэтому я использую библиотеку PHPass (как указано на этот сайт ) в попытке плавно перевести пользователей без необходимости сброса или изменения их паролей,

У меня все отлично работает в моем приложении, но оно не генерирует те же хеши паролей, которые использует Wordpress.Я предполагаю, что это связано с каким-то ключом сайта, но мне не повезло.Как я могу заставить PHPass генерировать тот же хэш пароля?

Ответы [ 2 ]

8 голосов
/ 08 июня 2012

Вы не сможете заставить PHPass генерировать один и тот же хэш дважды - он использует случайную соль. Эта соль хранится внутри хеша пароля.

Однако вам не нужно генерировать тот же самый хэш - скопируйте старый и используйте PHPass CheckPassword ($ pass, $ hash) для проверки пароля. Передайте ему хеш из БД как $ hash, а пароль введите как $ pass, и он вернет true, если они совпадают.

Метод HashPassword () предназначен ТОЛЬКО для создания хэша нового пароля (для нового пароля), а не для сравнения с существующим.

0 голосов
/ 01 марта 2012

Есть несколько возможностей.Они либо используют другой алгоритм хэширования, либо солят свои хэши, либо используют какой-то другой способ запутывания.Если Wordpress солит их хеши, то вам придется получить доступ к их солевому столу или отдельной фразе соли, чтобы изменить их хэши - но я сомневаюсь, что вы получите это.Я проверил, что PHPass поддерживает засолку так же, как и другие методы запутывания хешей, поэтому, вероятно, одна из них и является причиной того, что ваши хеш-коды не совпадают.

...