Альтернатива склепу ()

Я работаю над скриптом и должен сохранять пароли. В целях развития я использовал функцию crypt() потому что она была простой и доступной. Теперь, когда я в основном сделан, я хочу заменить его чем-то немного лучше и более последовательным.

Некоторые из моих проблем:

  • не все алгоритмы поддерживаются в каждой системе
  • иногда соль предварительно заносится в результат (кажется, проблема с безопасностью)

Я хочу что-то, что работает с PHP 4.3+.

Есть ли что-нибудь доступное, или я должен придерживаться crypt() ? Я думал об использовании md5(md5($password).$salt) . Спасибо за понимание.

В crypt нет ничего плохого

Если ваш сервер не поддерживает его, используйте другой сервер.

Вы никогда не должны использовать MD5 для хеширования паролей (или даже SHA1, если на то пошло)

Используйте либо bcrypt (метод blowfish crypt ), либо pbkdf2

Существует реализация pbkdf2 здесь: Шифрование паролей с помощью PHP для хранения данных с использованием стандарта RSA PBKDF2

Дополнительная информация о том, почему и как здесь:

  • Какой метод хэширования пароля я должен использовать?
  • Специалисты по безопасности рекомендуют bcrypt для хранения паролей?

Прежде всего: предоплата соли не является проблемой безопасности. Соль для каждого пароля – большой плюс, и вполне нормально, что она хранится рядом с pw.

Теперь: пока вы не переносите хэши паролей из одной системы в другую, а последние не поддерживают алгоритм по умолчанию первого, по определению ничего плохого не произойдет. Поскольку PHP 5.3 существуют встроенные алгоритмы в PHP, такие как Blowfish, которые гарантированно будут доступны.