Альтернатива bcrypt при сохранении паролей в PHP 5.2 - PullRequest
1 голос
/ 03 декабря 2011

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

Ответы [ 4 ]

2 голосов
/ 03 декабря 2011

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

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

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

1 голос
/ 12 октября 2014

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

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

0 голосов
/ 03 декабря 2011

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

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

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

Отредактировано после неправильной работы. Забыл хешировать внутри функции, также изменил на sha1 вместо md5. И ненавистники, люблю тебя тоже <3 </p>

0 голосов
/ 03 декабря 2011

Проверьте расширение Mcrypt PHP.Это было вокруг в течение долгого времени и имеет несколько различных алгоритмов.bcrypt кажется просто оболочкой Blowfish.Вы также можете легко использовать функцию PHP crypt () и передать соответствующую соль, чтобы заставить функцию использовать 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(), поэтому, когда вам нужно что-то проверить по хешу, вам нужно сначала получить хеш (из файла или базы данных, где он хранится), чтобы извлечьсоль.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...