Платформо-зависимое хэширование PHP в средах производства и разработки - PullRequest
0 голосов
/ 11 сентября 2011

Я решил отказаться от md5 () в качестве алгоритма шифрования паролей при хранении пользовательских паролей в БД, в пользу библиотеки phpass .

В системах, использующих md5, это былопроблема в том, чтобы иметь диаду производства / разработки, так как полученный хеш был таким же.Итак, в случае, если я создал тестового пользователя в одном из них, тот же пароль работал в другой среде.

Из того, что я понял, это не то же самое для других типов алгоритмов хеширования, как phpass (или его внутренние функции php) создает хэши, зависящие от платформы (я новичок в области хеширования / шифрования).

Мой вопрос: как следует подходить к этой ситуации?Другая база данных в prod / dev?Но что, если «наверху» решат, что мы должны переместить наше веб-приложение (вместе с его БД) на другой сервер - не будут ли хешированные пароли теперь недействительными - так как phpass создаст разных хешей для одного и того же (старые) пароли?

Позже редактировать:

Ну, я не удосужился проверить хеш разработчика для производственного.Несмотря на то, что они разные, их сравнение приводит к «истинно», как «они эквивалентны».Я думал, что если хеши разные, они не совпадают (например, md5).

Ответы [ 3 ]

2 голосов
/ 11 сентября 2011

Очень простое решение вашей проблемы: всегда используйте последнюю стабильную версию PHP.Начиная с 5.3 PHP предоставляет собственные реализации crypt алгоритмов и, таким образом, больше не зависит от платформы.Таким образом, ваши хэши должны быть совместимы.

0 голосов
/ 24 сентября 2012

Алгоритмы Tiger в PHP

Алгоритм Tiger192,4 часто рекомендуется для хеширования, однако я только что обнаружил, что на разных машинах можно получить разные значения хеш-функции.

Невозможно!(вы говорите)

Оказывается, PHP <5.4 реализует <code>Tiger сначала LSB , в то время как PHP 5.4+ реализует Tiger с MSB первый.Что правильно?Я не могу сказать (LSB соответствует testtiger , в то время как MSB соответствует wikipedia примеров), но дело в том, что ... не используйте Tiger, если необходимопереносимый или выдерживающий обновление PHP (PHP 5.3-> 5.4 сломает хешированную таблицу паролей Tiger, что имеет значительные последствия для удобства обслуживания).

Для проверки ...

echo hash("tiger192,3","The quick brown fox jumps over the lazy cog")."\n".
     hash("tiger192,3","");

MSB: (PHP 5.4.5)
a8f04b0f7201a0d728101c9d26525b31764a3493fcd8458f
3293ac630c13f0245f92bbb1766e16167a4e58492dde73f3

LSB: (PHP 5.3.2)
d7a001720f4bf0a8315b52269d1c10288f45d8fc93344a76
24f0130c63ac933216166e76b1bb925ff373de2d49584e7a

(Мое решение? Использовать другой алгоритм, и встроить известный хэш-тест в код модульного теста)

0 голосов
/ 11 сентября 2011

Есть ли конкретная причина, по которой вы решили использовать библиотеку phpass? Вы не вдавались в подробности по этому вопросу, но если вы просто искали более безопасный алгоритм, чем MD5, взгляните на hash() в сочетании с алгоритмом, подобным sha512.

...