Альтернатива bcrypt при сохранении паролей в PHP 5.2

Я использую bcrypt локально, поскольку xampp имеет PHP 5.3, но онлайн-учетная запись моего хостинга имеет только PHP 5.2. Есть ли хорошая альтернатива, которую я могу использовать, которая работает для 5.2?

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

PHP версия 5.5 предоставит удобный способ использования BCrypt, для PHP версии 5.3.7 и выше существует пакет совместимости. Пожалуйста, взгляните на этот ответ .

Для версий PHP до 5.3 рекомендуется использовать библиотеку phpass , они поддерживают PHP до версии 3.

Я использую bcrypt … Есть ли хорошая альтернатива, которую я могу использовать, которая работает для 5.2?

См. Инфраструктуру хэширования PHP в Openwall (PHPass). Он переносится и затвердевает от ряда распространенных атак на пароли пользователей. Парень, который написал фреймворк (SolarDesigner), тот же парень, который написал John The Ripper и сидит в качестве судьи в конкурсе Hays Hash. Поэтому он знает кое-что об атаках на пароли.

Проверьте расширение Mcrypt PHP. Он существует уже давно и имеет несколько разных алгоритмов. bcrypt кажется просто оболочкой Blowfish. Вы можете так же легко использовать функцию crypt () PHP и передать соответствующую соль, чтобы заставить функцию использовать Blowfish:

 // crypt($plaintext, $salt); // How you define $salt determines the encryption algorithm used $hash = crypt('PASSWORD', '$2a$12$Some22CharacterSaltXXO'); echo $hash; // Output would be $2a$12$Some22CharacterSaltXXO6NC3ydPIrirIzk1NdnTz0L/aCaHnlBa 

На странице руководства PHP (см. Выше) объясняется, почему соль для пароля выглядит так, как в моем примере выше. $2a$ говорит PHP использовать Blowfish, 12$ – модификатор стоимости; число между 04 (да, оно должно быть 2 цифры) и 31, что (я считаю) влияет на количество итераций, используемых механизмом хэширования. Как вы можете видеть, соль включена в выход из вызова в crypt() , поэтому, когда вам нужно что-то проверить против хеша, вам нужно сначала извлечь хэш (из файла или базы данных, где он хранится), чтобы вытащить соль.

Это зависит от того, где и для чего вы храните свои пароли.

Для онлайн-сайта (с пользователями и т. Д. +) Я бы сделал следующее:

$ hash = "jr38028 (/ # Fjg4i4g438h9) (# Hhhf3, ..; uh # F) 8"; $ hashed = sha1 ($ hash. $ PASSWORD. $ hash); // где $ PASSWORD – это переменная, содержащая пароль. echo $ hashed; // показывает хешированный пароль.

Отредактировано, сделав что-то не так. Забыл внутрь функции hash, также изменен на sha1 вместо md5. И ненавистники, любите вас тоже <3