Включить поддержку хеширования на основе blowfish

13

Как включить поддержку crypt_blowfish для теневых паролей и PHP на сервере Linux (Debian)?

Я имею в виду bcrypt на основе Blowfish в стиле OpenBSD , известный в PHP как CRYPT_BLOWFISH.

Насколько я знаю, для него нет пакета Debian, какие еще есть варианты, чтобы включить этот алгоритм хеширования для PHP?

Примечание:
PHP- функция crypt () относительно напрямую взаимодействует с функцией crypt (3) библиотеки C, предоставляемой базовой операционной системой.

Обновление
имен пакетов не так ясно, как могло бы (должно быть).
Пакет PEAR Crypt_Blowfish является заменой расширения PHP MCrypt для быстрой двусторонней шифровки Blowfish.

Также пакет Debian BCrypt также является реализацией «нормального» двустороннего алгоритма blowfish.

Что мне нужно, так это реализация Bcrypt-hash для хеширования паролей.

Jacco
источник
не работает "pear install Crypt_blowfish"?
Кори
Пакет pear crypt_blowfish представляет собой «нормальный» двусторонний алгоритм шифрования blowfish. Я ищу алгоритм хеширования на основе blowfish.
Jacco
ах, теперь я вижу проблему.
Кори
Не знал, что вы можете получить более высокую награду за вопрос, чем ваш текущий представитель. Интересный.
Copas
Rep вычитается немедленно, поэтому у него было ~ 200 повторений, а теперь ~ 50.
ceejayoz

Ответы:

9

Пакет, который вам нужно установить в Debian, это libpam-unix2.

Затем вам придется отредактировать следующие файлы в разделе /etc/pam.d/и изменить все pam_unix.soиспользование на pam_unix2.so:

  • общий счет
  • общая аутентификация
  • общий пароль
  • синфазная сессия

Наконец, отредактируйте common-passwordфайл и замените параметр «md5» на «blowfish».

Пароли, которые обновляются после внесения этих изменений, будут хешироваться с помощью blowfish. Существующие теневые пароли не изменяются. Источник

Чтобы использовать Blowfish в PHP, вы предоставляете соль для Blowfish crypt(). Как это:

crypt('sting', '$2a$07$' . substr('saltsaltsalt', 0, CRYPT_SALT_LENGTH) ) 

Сначала вы должны проверить, если CRYPT_BLOWFISH == 1. И вам нужно использовать достаточно длинную соль, которая равна (или больше) 22 символов. Источник

hayalci
источник
Хммм, после внесения этих изменений CRYPT_BLOWFISH по какой-то причине все еще не равен 1.
Kzqai
1
Предостережение: если ваша версия pam_unix2 не поддерживает алгоритм хеширования, используемый в настоящее время для пароля пользователя, этот пользователь может не иметь возможности войти в систему. Я думаю, что это то, с чем я столкнулся в своем окне Debian; некоторые учетные записи использовали SHA512 и не могли войти, но учетная запись, которая использовала MD5, могла. Вы можете установить эти пароли от пользователя root, потому passwdчто не запрашивает старый пароль при запуске от пользователя root. Важно: держите корневую сессию открытой, пока не будете уверены, что сможете снова войти в систему!
Том Зыч