Как создать хэш пароля Unix с помощью php - PullRequest
1 голос
/ 24 января 2009

Я пытаюсь создать системных пользователей с помощью php-скрипта безопасным способом. Я хотел бы иметь возможность хешировать пароль с помощью php-скрипта, чтобы их пароль нигде не отображался в истории bash.

Как мне взять строку и хэшировать ее, чтобы она была хэшем пароля Unix?

$UX_PW = some_function('my_password');
exec("useradd -p $UX_PW newusername");

Ответы [ 5 ]

5 голосов
/ 24 января 2009

Это crypt(), который реализует хеширование паролей UNIX.
http://us.php.net/manual/en/function.crypt.php

2 голосов
/ 24 января 2009

Используйте crypt . Последние версии Linux / Unix используют CRYPT_MD5 или CRYPT_BLOWFISH. MD5 является наиболее широко поддерживаемым. DES для старых систем.

Также следует отметить, что версия MD5 - это не простая операция суммирования MD5, она также использует значение «соли», чтобы сделать хеши не прекалькулируемыми. [[Я придумал этот термин :)] *

2 голосов
/ 24 января 2009

В зависимости от вашей системы, вы ищете crypt() или md5().

Традиционно, unix использует пароли, зашифрованные DES (то есть функцию 'crypt'), с двухсимвольной солью (два случайных символа из набора [a-zA-Z0-9./]), которые ставятся перед хэш, чтобы нарушить алгоритм.

Более новые системы часто используют MD5.

0 голосов
/ 24 января 2009

Со страницы руководства Ubuntu Intrepid на passwd (изменить пароль)

Безопасность пароля зависит от надежности алгоритма шифрования и размера пространства ключей. Метод шифрования UNIX System основан на NBS DES алгоритм и очень безопасен. Размер пространства ключа зависит от случайности выбранного пароля.

Кроме того, вместо использования crypt () вы можете предпочесть hash () , потому что это позволяет вам сохранить настройку строки для алгоритма хеширования в другом месте. Если ваш код должен использовать другой алгоритм хеширования для других сред, вам нужно будет только изменить строку, а не имя функции.

0 голосов
/ 24 января 2009

Хеширование пароля, используемое в UNIX, Linux и других UNIX-подобных операционных системах POSIX, сильно различается. В большинстве методов хеширования "passwd" используется модифицированный алгоритм DES (не истинный DES), они могут применять хеширование ко входу несколько раз и используют соль 16 или 24 бит. Конкретный ответ на метод создания passwd-совместимого хэша зависит от того, какую операционную систему вы используете.

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

Что касается используемого алгоритма шифрования, это зависит от вашей операционной системы.

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