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

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

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

md5sum abcdefg output: ac54bcf346e578feb46888b3ecd2344f

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

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

56 ответов

$ 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 в 11:28

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

md5sum -

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

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

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

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

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

echo -n 123456 | openssl md5
7
ответ дан 2 August 2018 в 03:11

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

md5sum <<<"my string"

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

printf '%s' "my string" | md5sum
57
ответ дан 2 August 2018 в 03:11
  • 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
ответ дан 2 August 2018 в 03:11
  • 1
    Не забывайте параметр -n здесь, чтобы избежать вывода конечной новой строки, что приведет к неправильному md5: echo -n $myvariable | md5sum | cut -d" " -f1 – derFunk 3 December 2015 в 23:28

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

9
ответ дан 2 August 2018 в 03:11
  • 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
ответ дан 2 August 2018 в 03:11

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

md5sum -

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

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

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

3
ответ дан 2 August 2018 в 03:11
openssl md5 filename openssl sha1 filename

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

echo -n 123456 | openssl md5
7
ответ дан 4 August 2018 в 19:04

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

md5sum <<<"my string"

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

printf '%s' "my string" | md5sum
57
ответ дан 4 August 2018 в 19:04
  • 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
ответ дан 4 August 2018 в 19:04
  • 1
    Не забывайте параметр -n здесь, чтобы избежать вывода конечной новой строки, что приведет к неправильному md5: echo -n $myvariable | md5sum | cut -d" " -f1 – derFunk 3 December 2015 в 23:28

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

9
ответ дан 4 August 2018 в 19:04
  • 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
ответ дан 4 August 2018 в 19:04

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

md5sum -

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

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

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

3
ответ дан 4 August 2018 в 19:04
openssl md5 filename openssl sha1 filename

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

echo -n 123456 | openssl md5
7
ответ дан 6 August 2018 в 03:23

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

md5sum <<<"my string"

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

printf '%s' "my string" | md5sum
57
ответ дан 6 August 2018 в 03:23
  • 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
ответ дан 6 August 2018 в 03:23
  • 1
    Не забывайте параметр -n здесь, чтобы избежать вывода конечной новой строки, что приведет к неправильному md5: echo -n $myvariable | md5sum | cut -d" " -f1 – derFunk 3 December 2015 в 23:28

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

9
ответ дан 6 August 2018 в 03:23
  • 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
ответ дан 6 August 2018 в 03:23

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

md5sum -

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

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

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

3
ответ дан 6 August 2018 в 03:23
openssl md5 filename openssl sha1 filename

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

echo -n 123456 | openssl md5
7
ответ дан 7 August 2018 в 21:09

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

md5sum <<<"my string"

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

printf '%s' "my string" | md5sum
57
ответ дан 7 August 2018 в 21:09
  • 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
ответ дан 7 August 2018 в 21:09
  • 1
    Не забывайте параметр -n здесь, чтобы избежать вывода конечной новой строки, что приведет к неправильному md5: echo -n $myvariable | md5sum | cut -d" " -f1 – derFunk 3 December 2015 в 23:28

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

9
ответ дан 7 August 2018 в 21:09
  • 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
ответ дан 7 August 2018 в 21:09

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

md5sum -

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

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

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

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

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

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