Как я могу реализовать bcrypt в приложении PHP (и должен ли я)?

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

Во-первых, то, что я нашел для других языков: bcrypt-ruby , похоже, использует либо оригинальный код C из OpenBSD, либо java-код jBCrypt . py-bcrypt - это тонкая оболочка вокруг кода BSD. BCrypt.net является прямым портом jBCrypt .

Теперь сам PHP поддерживает bcrypt (хотя и обманчиво называемый просто 'blowfish') в функции crypt . Однако версии до 5.3 требуют поддержки самой системы, обычно предоставляемой crypt_blowfish . phpass аналогичен и рекомендует установить PHP 5.3 или Suhosin .

Поскольку многие пользователи приложения используют стандартный виртуальный хостинг, я не хочу требовать какой-либо специальной настройки сервера.

  1. Не хватает ли мне нехватки знаний PHP? Могу ли я действительно использовать одну из уже созданных реализаций?
  2. Должен ли я вместо этого просто создать простую петлевую функцию, которая несколько раз вызывает sha1 () или md5 () для некоторого настраиваемого числа

6
задан Xiong Chiamiov 23 August 2010 в 23:29
поделиться