Хэширование строки с использованием алгоритма, который Linux использует для хеширования паролей пользователей? - PullRequest
0 голосов
/ 16 июня 2011

Какой алгоритм использует Linux для хеширования паролей пользователей? Как я могу реализовать этот алгоритм в PHP?

Ответы [ 2 ]

1 голос
/ 16 июня 2011

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

В дистрибутивах Linux, использующих glibc2 , хеш-функция имеет «магический бит» и префикс «соль».

Волшебный бит начинается с '$ x $' и используется для определения используемой хеш-функции:

  • 1 $ за MD5
  • 2 $ для Blowfish,
  • $ 5 $ для SHA-256 и
  • 6 $ для SHA-512

(другие Unix-системы, такие как NetBSD, могут иметь другие значения для этого).

Затем за магическим битом следуют 8 битов, которые составляют соль и, необязательно, заканчиваются другим "$". Между этим и следующим "$" вы найдете хеш действительного пароля.

Почти все современные системы Linux в наши дни НЕ хранят пароли в удобочитаемом мире /etc/passwd. Вместо этого пароли скрываются в /etc/shadow, где только права доступа root доступны для чтения. Если используется схема теневого пароля, в файле /etc/passwd вместо пароля отображается символ «*» или «x».

Формат типичного пароля в /etc/shadow будет выглядеть следующим образом:

$a:$b:$c:$e:$f:$g:$h:$i

Где:

$ a : имя пользователя

$ b : соль и хешированный пароль (как описано выше). Если это "NP" или "!" или ноль, то это означает, что у учетной записи нет пароля. «LK» или «*» означает, что учетная запись заблокирована, и пользователь не сможет войти в систему. "!!" означает, что срок действия пароля истек

$ c : Дни с момента последнего изменения пароля

$ d : дней до внесения изменений

$ e : Требуется дней до изменения

$ f : предупреждение о днях истечения

$ g : дней до неактивности аккаунта

$ h : Дни с момента окончания срока действия учетной записи

$ i : зарезервировано для будущего использования.

Пример файла теневого пароля можно найти по адресу: http://configuration.logfish.net/index.php/etc/shadow

Ссылка:

crypt (3) - справочная страница Linux

Зачем скрывать ваш файл passwd?

Понимание хэшей паролей Linux

Теневой пароль в Википедии

1 голос
/ 16 июня 2011

Попробуйте использовать функцию PHP crypt .

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