в Arch Linux, как я могу создать один MD5 хэш для пароля с помощью командной строки? Конечно, я знаю, что есть безопасные алгоритмы хэширования паролей, которых md5 нет, но это всего лишь часть эксперимента.
Как создать MD5 хэш с помощью командной строки Arch Linux?
6 ответов
просто echo
it к md5sum.
первый результат будет рассматривать символ новой строки в конце строки, до генерации хэша.
$ echo P@ssword1 | md5sum
0a43c426e3d6764fe1f3f7cbb3579eba -
иначе как @AFH состояния если вы не хотите, чтобы символ новой строки сделать следующее:
$ echo -n 'P@ssword1' | md5sum
d106b29303767527fc11214f1b325fb6 -
ни один из ответов не упоминает, что с echo -n 'password' | …
, вы будете писать свой пароль для постоянного хранения, а именно ваша история.
вы можете избежать этого, в зависимости от оболочки, добавляя к команде пробел (проверьте это для вашей оболочки). Прочитайте документацию по оболочкам о том, как это обрабатывается.
В качестве альтернативы, вы можете использовать md5sum
напрямую, запустив md5sum
, введите пароль, а затем Ctrl+D. Не бейте введите между пароль и Ctrl+D, если вы не хотите включать новую строку в хэш.
вот пример использования openssl
echo -n 'stack overflow' | openssl md5
(stdin)= 481b8423202598ecfb233c5fa68caf68
Openssl реализует несколько различных алгоритмов хеширования, если вам когда-нибудь понадобится другой.
кажется, все предлагают использовать echo
- по крайней мере, большую часть времени, к счастью, с -n
, который снимает one его проблемы (которые он печатает новую строку в конце).
но echo
не обязательно последовательны. Он имеет ряд поведенческих причуд, которые вам нужно иметь в виду, и может быть несовместимым между системами. Лучше использовать printf
вместо.
следовательно, вы должны быть использование
$ printf '%s' 'P@ssword1' | md5sum
d106b29303767527fc11214f1b325fb6 -
$
С printf
, если вы хотите новую строку в конце, вы должны явно добавить его себе:
$ printf '%s\n' 'P@ssword1' | md5sum
0a43c426e3d6764fe1f3f7cbb3579eba -
$ echo 'P@ssword1' | md5sum
0a43c426e3d6764fe1f3f7cbb3579eba -
$
вместо того, чтобы просить, чтобы не получить его (и в надежде echo
работает то же самое в системе, на которой это происходит в какой-то более поздний момент):
$ echo -n 'P@ssword1' | md5sum
d106b29303767527fc11214f1b325fb6 -
$
, чтобы расширить на точку на особенности echo
что я уже упоминал выше, Вот несколько:
- он работает по-разному на различных системах. Многие современные системы поддерживают
-n
рассказатьecho
чтобы не завершать вывод с новой строкой, но некоторые из них не могут. А что если вы хотите на самом деле распечатать-n
? Некоторые реализации могут отличаться в зависимости от настройки в оболочке или среде. - он обрабатывает или не может обрабатывать некоторые символьные последовательности (особенно символы, экранированные обратной косой чертой) особым образом. Это не совсем необоснованно иметь их в паролях, а POSIX нет гарантия ничего о поведении echo (его поведение конкретно undefined), если первый аргумент
-n
или любой из его аргументов содержит обратную косую черту.
ответы на вышеупомянутый вопрос об использовании printf вместо echo имеют еще несколько, а также дополнительные ссылки для большего чтения, если вам интересно.
вопрос подсказывает мне что-то другое, поэтому для полноты картины:
существует метод хэширования паролей на основе MD5, который заменил оригинальный des-based crypt () для использования в /etc/shadow
. Теперь он был заменен более новыми вещами, но если вы когда-нибудь столкнетесь с "хэшированием паролей MD5" в дикой природе, это может относиться к этому, а не к простому MD5.
эти хэши на основе MD5 отмечены префиксом $
и вы можете вычислить их с openssl passwd -1
вы можете легко сделать это с помощью echo
и md5sum
:
echo -n "password" | md5sum
Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]