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

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

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

md5sum abcdefg output: ac54bcf346e578feb46888b3ecd2344f

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

152
задан 23 July 2011 в 05:18

56 ответов

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

~$ echo -n Welcome | md5sum
83218ac34c1834c26781fe4bde918ee4  -

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

185
ответ дан 25 May 2018 в 19:44
  • 1
    Вы также хотите обновить результат примера, так как 7803ffca ... является результатом с добавленной новой строкой. Правильным результатом для команды выше является 83218ac34c1834c26781fe4bde918ee4 - – Xanthir 28 May 2015 в 00:14
  • 2
    почему в конце есть пробелы и тире? – keune 2 December 2015 в 13:46
  • 3
    Пожалуйста, исправьте меня, если я ошибаюсь, но я думаю, что это связано с тем, что MD5sum применялся к потоку данных, а не к чтению содержимого файла, которое имеет имя, связанное с ним. – jfmessier 3 December 2015 в 16:45
  • 4
    Обратите внимание, что -n является обязательным. Без него ваш хеш будет абсолютно неправильным, так как он включает символ новой строки. – Pithikos 8 February 2016 в 15:23
  • 5
    Это помогло мне и в macOS, хотя это немного другое: echo -n Welcome | md5 – Edward J. Stembler 20 April 2017 в 22:25

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

~$ echo -n Welcome | md5sum 83218ac34c1834c26781fe4bde918ee4 -

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

192
ответ дан 25 July 2018 в 21:34

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

~$ echo -n Welcome | md5sum 83218ac34c1834c26781fe4bde918ee4 -

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

192
ответ дан 31 July 2018 в 10:25

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

~$ echo -n Welcome | md5sum 83218ac34c1834c26781fe4bde918ee4 -

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

192
ответ дан 31 July 2018 в 11:28

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

~$ echo -n Welcome | md5sum 83218ac34c1834c26781fe4bde918ee4 -

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

192
ответ дан 2 August 2018 в 03:11

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

~$ echo -n Welcome | md5sum 83218ac34c1834c26781fe4bde918ee4 -

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

192
ответ дан 4 August 2018 в 19:04

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

~$ echo -n Welcome | md5sum 83218ac34c1834c26781fe4bde918ee4 -

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

192
ответ дан 6 August 2018 в 03:23

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

~$ echo -n Welcome | md5sum 83218ac34c1834c26781fe4bde918ee4 -

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

192
ответ дан 7 August 2018 в 21:09

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

md5sum <<<"my string"

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

printf '%s' "my string" | md5sum
56
ответ дан 25 May 2018 в 19:44
  • 1
    Предоставление как @messier, так и @enzotib голоса; оба относятся к моей «элегантной простоте». категория. Я бы хотел использовать канал <<<" в скрипте; echo string выигрывает для командной строки. Отлично сработано. – Tom 20 July 2011 в 22:01
  • 2
    +1 для правильного использования printf. Если вы хотите получить сумму без -, поставьте | cut -d ' ' -f 1. Пример использования: sum=$(printf '%s' 'some string' | md5sum | cut -d ' ' -f 1) – Lekensteyn 21 July 2011 в 13:49
  • 3
    это странно, но оператор <<< и функция printf дают совершенно разные результаты для хэша md5! результат printf является правильным, хотя! – Hamed Momeni 21 July 2011 в 20:30
  • 4
    кажется, с помощью оператора <<< отправляет новую строку в md5sum! – Hamed Momeni 21 July 2011 в 20:32
  • 5
    Да, это так, как я сказал между первым и вторым примером – enzotib 21 July 2011 в 23:32
$ echo -n 123456 | md5sum | awk '{print $1}'
e10adc3949ba59abbe56e057f20f883e

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

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

#!/bin/bash

echo   -n   $1 | md5sum | awk '{print $1}'

Выполнение разрешения:

 chmod +x md5.sh

Затем:

$ md5.sh 123456
e10adc3949ba59abbe56e057f20f883e

Если ваша система является macOS. Вам нужно изменить этот скрипт:

$ echo -n 123456 | md5 | awk '{print $1}' 
e10adc3949ba59abbe56e057f20f883e
17
ответ дан 25 May 2018 в 19:44

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

9
ответ дан 25 May 2018 в 19:44
  • 1
    да, ты тоже прав. но ctrl+d нужно дважды нажать, чтобы он работал. – Hamed Momeni 30 September 2011 в 18:57
  • 2
    @James, если он не соответствует новой строке, да. Если вы нажмете его после попадания в него, ему потребуется только один раз. Когда он не соответствует новой строке, он просто заставляет все символы, введенные в строку до сих пор, обрабатываться немедленно, а не ждать новой строки. – psusi 30 September 2011 в 19:42
openssl md5 filename
openssl sha1 filename

Для строки string содержимое с использованием эха

echo -n 123456 | openssl md5
5
ответ дан 25 May 2018 в 19:44

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

md5sum -

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

Меньше, чтобы напечатать и нет трубопроводов! И избегайте использования вашего пароля открытого текста в истории оболочки! Woo!

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

3
ответ дан 25 May 2018 в 19:44

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

Неважно, если вы делаете echo "$myvariable" или echo -n "$myvariable", но вы всегда должны использовать doubleqoutes для строки и всегда используют один и тот же метод. если не все будет соответствовать. на выходе вы всегда получаете конечное пространство и тире, как показано в примере:
$ echo -n Welcome | md5sum
7803ffcaea43bb81a439fde13b29bc35  -

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

2
ответ дан 25 May 2018 в 19:44
  • 1
    Не забывайте параметр -n здесь, чтобы избежать вывода конечной новой строки, что приведет к неправильному md5: echo -n $myvariable | md5sum | cut -d" " -f1 – derFunk 3 December 2015 в 23:28
openssl md5 filename openssl sha1 filename

Для строки string содержимое с использованием эха

echo -n 123456 | openssl md5
7
ответ дан 25 July 2018 в 21:34

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

md5sum <<<"my string"

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

printf '%s' "my string" | md5sum
57
ответ дан 25 July 2018 в 21:34
  • 1
    Предоставление как @messier, так и @enzotib голоса; оба относятся к моей «элегантной простоте». категория. Я бы хотел использовать канал <<<" в скрипте; echo string выигрывает для командной строки. Отлично сработано. – Tom 20 July 2011 в 22:01
  • 2
    +1 для правильного использования printf. Если вы хотите получить сумму без -, поставьте | cut -d ' ' -f 1. Пример использования: sum=$(printf '%s' 'some string' | md5sum | cut -d ' ' -f 1) – Lekensteyn 21 July 2011 в 13:49
  • 3
    это странно, но оператор <<< и функция printf дают совершенно разные результаты для хэша md5! результат printf является правильным, хотя! – Hamed Momeni 21 July 2011 в 20:30
  • 4
    кажется, с помощью оператора <<< отправляет новую строку в md5sum! – Hamed Momeni 21 July 2011 в 20:32
  • 5
    Да, это так, как я сказал между первым и вторым примером – enzotib 21 July 2011 в 23:32

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

Неважно, если вы делаете echo "$myvariable" или echo -n "$myvariable", но вы всегда должны использовать doubleqoutes для строки и всегда используют один и тот же метод. если не все будет соответствовать. на выходе вы всегда получаете конечное пространство и тире, как показано в примере: $ echo -n Welcome | md5sum 7803ffcaea43bb81a439fde13b29bc35 -

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

2
ответ дан 25 July 2018 в 21:34
  • 1
    Не забывайте параметр -n здесь, чтобы избежать вывода конечной новой строки, что приведет к неправильному md5: echo -n $myvariable | md5sum | cut -d" " -f1 – derFunk 3 December 2015 в 23:28

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

9
ответ дан 25 July 2018 в 21:34
  • 1
    да, ты тоже прав. но ctrl+d нужно дважды нажать, чтобы он работал. – Hamed Momeni 30 September 2011 в 18:57
  • 2
    @James, если он не соответствует новой строке, да. Если вы нажмете его после попадания в него, ему потребуется только один раз. Когда он не соответствует новой строке, он просто заставляет все символы, введенные в строку до сих пор, обрабатываться немедленно, а не ждать новой строки. – psusi 30 September 2011 в 19:42
$ echo -n 123456 | md5sum | awk '{print $1}' e10adc3949ba59abbe56e057f20f883e

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

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

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

Выполнение разрешения:

chmod +x md5.sh

Затем:

$ md5.sh 123456 e10adc3949ba59abbe56e057f20f883e

Если ваша система является macOS. Вам нужно изменить этот скрипт:

$ echo -n 123456 | md5 | awk '{print $1}' e10adc3949ba59abbe56e057f20f883e
19
ответ дан 25 July 2018 в 21:34

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

md5sum -

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

Меньше, чтобы напечатать и нет трубопроводов! И избегайте использования вашего пароля открытого текста в истории оболочки! Woo!

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

3
ответ дан 25 July 2018 в 21:34
openssl md5 filename openssl sha1 filename

Для строки string содержимое с использованием эха

echo -n 123456 | openssl md5
7
ответ дан 31 July 2018 в 10:25

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

md5sum <<<"my string"

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

printf '%s' "my string" | md5sum
57
ответ дан 31 July 2018 в 10:25
  • 1
    Предоставление как @messier, так и @enzotib голоса; оба относятся к моей «элегантной простоте». категория. Я бы хотел использовать канал <<<" в скрипте; echo string выигрывает для командной строки. Отлично сработано. – Tom 20 July 2011 в 22:01
  • 2
    +1 для правильного использования printf. Если вы хотите получить сумму без -, поставьте | cut -d ' ' -f 1. Пример использования: sum=$(printf '%s' 'some string' | md5sum | cut -d ' ' -f 1) – Lekensteyn 21 July 2011 в 13:49
  • 3
    это странно, но оператор <<< и функция printf дают совершенно разные результаты для хэша md5! результат printf является правильным, хотя! – Hamed Momeni 21 July 2011 в 20:30
  • 4
    кажется, с помощью оператора <<< отправляет новую строку в md5sum! – Hamed Momeni 21 July 2011 в 20:32
  • 5
    Да, это так, как я сказал между первым и вторым примером – enzotib 21 July 2011 в 23:32

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

Неважно, если вы делаете echo "$myvariable" или echo -n "$myvariable", но вы всегда должны использовать doubleqoutes для строки и всегда используют один и тот же метод. если не все будет соответствовать. на выходе вы всегда получаете конечное пространство и тире, как показано в примере: $ echo -n Welcome | md5sum 7803ffcaea43bb81a439fde13b29bc35 -

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

2
ответ дан 31 July 2018 в 10:25
  • 1
    Не забывайте параметр -n здесь, чтобы избежать вывода конечной новой строки, что приведет к неправильному md5: echo -n $myvariable | md5sum | cut -d" " -f1 – derFunk 3 December 2015 в 23:28

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

9
ответ дан 31 July 2018 в 10:25
  • 1
    да, ты тоже прав. но ctrl+d нужно дважды нажать, чтобы он работал. – Hamed Momeni 30 September 2011 в 18:57
  • 2
    @James, если он не соответствует новой строке, да. Если вы нажмете его после попадания в него, ему потребуется только один раз. Когда он не соответствует новой строке, он просто заставляет все символы, введенные в строку до сих пор, обрабатываться немедленно, а не ждать новой строки. – psusi 30 September 2011 в 19:42
$ echo -n 123456 | md5sum | awk '{print $1}' e10adc3949ba59abbe56e057f20f883e

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

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

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

Выполнение разрешения:

chmod +x md5.sh

Затем:

$ md5.sh 123456 e10adc3949ba59abbe56e057f20f883e

Если ваша система является macOS. Вам нужно изменить этот скрипт:

$ echo -n 123456 | md5 | awk '{print $1}' e10adc3949ba59abbe56e057f20f883e
19
ответ дан 31 July 2018 в 10:25

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

md5sum -

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

Меньше, чтобы напечатать и нет трубопроводов! И избегайте использования вашего пароля открытого текста в истории оболочки! Woo!

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

3
ответ дан 31 July 2018 в 10:25
openssl md5 filename openssl sha1 filename

Для строки string содержимое с использованием эха

echo -n 123456 | openssl md5
7
ответ дан 31 July 2018 в 11:28

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

md5sum <<<"my string"

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

printf '%s' "my string" | md5sum
57
ответ дан 31 July 2018 в 11:28
  • 1
    Предоставление как @messier, так и @enzotib голоса; оба относятся к моей «элегантной простоте». категория. Я бы хотел использовать канал <<<" в скрипте; echo string выигрывает для командной строки. Отлично сработано. – Tom 20 July 2011 в 22:01
  • 2
    +1 для правильного использования printf. Если вы хотите получить сумму без -, поставьте | cut -d ' ' -f 1. Пример использования: sum=$(printf '%s' 'some string' | md5sum | cut -d ' ' -f 1) – Lekensteyn 21 July 2011 в 13:49
  • 3
    это странно, но оператор <<< и функция printf дают совершенно разные результаты для хэша md5! результат printf является правильным, хотя! – Hamed Momeni 21 July 2011 в 20:30
  • 4
    кажется, с помощью оператора <<< отправляет новую строку в md5sum! – Hamed Momeni 21 July 2011 в 20:32
  • 5
    Да, это так, как я сказал между первым и вторым примером – enzotib 21 July 2011 в 23:32

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

Неважно, если вы делаете echo "$myvariable" или echo -n "$myvariable", но вы всегда должны использовать doubleqoutes для строки и всегда используют один и тот же метод. если не все будет соответствовать. на выходе вы всегда получаете конечное пространство и тире, как показано в примере: $ echo -n Welcome | md5sum 7803ffcaea43bb81a439fde13b29bc35 -

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

2
ответ дан 31 July 2018 в 11:28
  • 1
    Не забывайте параметр -n здесь, чтобы избежать вывода конечной новой строки, что приведет к неправильному md5: echo -n $myvariable | md5sum | cut -d" " -f1 – derFunk 3 December 2015 в 23:28

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

9
ответ дан 31 July 2018 в 11:28
  • 1
    да, ты тоже прав. но ctrl+d нужно дважды нажать, чтобы он работал. – Hamed Momeni 30 September 2011 в 18:57
  • 2
    @James, если он не соответствует новой строке, да. Если вы нажмете его после попадания в него, ему потребуется только один раз. Когда он не соответствует новой строке, он просто заставляет все символы, введенные в строку до сих пор, обрабатываться немедленно, а не ждать новой строки. – psusi 30 September 2011 в 19:42

Другие вопросы по тегам:

Похожие вопросы: