Как получить MD5-хэш строки непосредственно в терминале?

Как мне получить MD5 хэш строки непосредственно из терминала?

Например, я хочу, чтобы строка abcdefg хэшированный. В настоящее время md5sum команда принимает только имя файла в качестве входных данных. Я хочу просто ввести следующую строку, и все будет сделано.

md5sum abcdefgoutput: ac54bcf346e578feb46888b3ecd2344f

Как я могу этого добиться?

Вы также можете сказать что-то вроде этого :

~$ echo -n Welcome | md5sum83218ac34c1834c26781fe4bde918ee4  -

В основном он делает то же самое, что описано @ enzotib, но, возможно, немного проще.

Очень просто, он принимает stdin, так что

md5sum <<<"my string"

Чтобы избежать завершающей новой строки, добавленной оболочкой:

printf '%s' "my string" | md5sum
$ echo -n 123456 | md5sum | awk '{print $1}'e10adc3949ba59abbe56e057f20f883e

вы можете создать сценарий оболочки.

Например, имя скрипта - md5.sh:

#!/bin/bashecho   -n   $1 | md5sum | awk '{print $1}'

разрешение выполнить:

 chmod +x md5.sh

Затем:

$ md5.sh 123456e10adc3949ba59abbe56e057f20f883e

Если ваша система macOS. Вам необходимо изменить этот скрипт:

$ echo -n 123456 | md5 | awk '{print $1}' e10adc3949ba59abbe56e057f20f883e
openssl md5 filenameopenssl sha1 filename

Для строки передавайте содержимое с помощью echo

echo -n 123456 | openssl md5

Запуск md5sum вообще без аргументов приведет к считыванию входных данных с терминала. Введите или вставьте все, что вы хотите, и когда вы закончите, нажмите ctrl-d чтобы завершить ввод.

Мой быстрый тычок в --help для md5sum демонстрирует, что команда:

md5sum -

затем будет выдано приглашение для простого ввода. Ввод некоторого текста, а затем использование Enter и затем Ctrl+D чтобы обозначить конец файла, затем вызывает md5sum чтобы вывести MD5 введенного вами необработанного текста (включая этот Enter, это CR, IIRC).

Меньше печатать и никаких трубопроводов! И избежать записи вашего текстового пароля в истории оболочки! Ууу!

Если вам не нужен этот завершающий CR (что обычно имеет место, если вы хотите хэшировать пароль), не нажимайте Enter до Ctrl+D, введите Ctrl+D вместо этого дважды.

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

  • Это не имеет значения, если вы это сделаете echo "$myvariable" или echo -n "$myvariable"но вы всегда должны использовать doubleqoutes для строк и всегда использовать один и тот же метод. если нет, то все будет не так.
  • в выходных данных вы всегда получаете конечный пробел и тире, как показано в примере:

    $ echo -n Welcome | md5sum7803ffcaea43bb81a439fde13b29bc35  -

чтобы избавиться от этого и остаться только с кодом 7803ffcaea43bb81a439fde13b29bc35, делай: echo "$myvariable" | md5sum | cut -d" " -f1

Есть много примеров для этого, но некоторые из них не эквивалентны, потому что некоторые из них явно или неявно включают новую строку, а некоторые другие - нет.

Я хотел бы четко указать, какой из популярных методов включает новую строку, а какие нет.

Вот несколько примеров расчета md5 хэш БЕЗ завершающей новой строки (ПРАВИЛЬНО):

Использование файла с текстом:

$ echo -n "test" > test.txt$ wc test.txt0 1 4 test.txt$ md5sum test.txt098f6bcd4621d373cade4e832627b4f6  test.txt

Примечание: -n в echo означает: "не выводить завершающую новую строку".

С помощью echo с -n встроенный:

$ echo -n "test" | md5sum098f6bcd4621d373cade4e832627b4f6  -

С помощью printf:

$ printf "%s" "test" | md5sum098f6bcd4621d373cade4e832627b4f6  -

Используя только md5sum команда:

(Давайте напишем md5sum, нажмите Enter затем напишите строку test а затем нажмите двойную комбинацию Ctrl+d)

$ md5sumtest098f6bcd4621d373cade4e832627b4f6  -

С помощью md5sum - команда:

(Давайте напишем md5sum -, нажмите Enter затем напишите строку test а затем нажмите двойную комбинацию Ctrl+d)

$ md5sum -test098f6bcd4621d373cade4e832627b4f6  -

Вот несколько примеров расчета md5 хэш С завершающей новой строкой (ПОЭТОМУ НЕВЕРНО):

Использование файла с текстом:

$ echo "test" > test_n.txt$ wc test_n.txt1 1 5 test_n.txt$ md5sum test_n.txtd8e8fca2dc0f896fd7cb4cb0031ba249  test_n.txt

С помощью echo без -n встроенный:

echo "test" | md5sumd8e8fca2dc0f896fd7cb4cb0031ba249  -

С помощью вот строки:

$ md5sum <<< "test"d8e8fca2dc0f896fd7cb4cb0031ba249  -

Используя только md5sum команда, но с Enter ключ после написания текста:

(Давайте напишем md5sum, нажмите Enter затем напишите строку test а затем нажмите agaien Enter и однажды комбинация Ctrl+d)

$ md5sumtestd8e8fca2dc0f896fd7cb4cb0031ba249  -

С помощью md5sum - команда, но с Enter ключ после написания текста:

(Давайте напишем md5sum -, нажмите Enter затем напишите строку test а затем нажмите agaien Enter и однажды комбинация Ctrl+d)

$ md5sum -testd8e8fca2dc0f896fd7cb4cb0031ba249  -

В моем случае лучшим решением для хэширования простой строки является:

md5hash=$(echo -n "myhashedstring" | md5sum | head -c 32)

приведет к 2e8f8b94e488a2f442a55951862612aa

md5 -s abcdefg

Не знаю, почему этот вопрос здесь, на этом форуме. Это должно быть в Unix и Linux, суперпользователь, но здесь? Я не уверен. В любом случае, это имеет ценность, где бы оно ни было.